Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

In Oracle, you can create your own procedures.

The syntax for a procedure is: CREATE [OR REPLACE] PROCEDURE procedure_name [ (parameter [,parameter]) ] IS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [procedure_name];

When you create a procedure or function, you may define parameters. There are three types of parameters that can be declared: 1. IN - The parameter can be referenced by the procedure or function. The value of the parameter can not be overwritten by the procedure or function. 2. OUT - The parameter can not be referenced by the procedure or function, but the value of the parameter can be overwritten by the procedure or function. 3. IN OUT - The parameter can be referenced by the procedure or function and the value of the parameter can be overwritten by the procedure or function.

The following is a simple example of a procedure: CREATE OR REPLACE Procedure UpdateCourse ( name_in IN varchar2 ) IS cnumber number; cursor c1 is select course_number from courses_tbl where course_name = name_in; BEGIN open c1; fetch c1 into cnumber; if c1%notfound then cnumber := 9999; end if;

insert into student_courses ( course_name, course_number) values ( name_in, cnumber ); commit; close c1; EXCEPTION WHEN OTHERS THEN raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR'||SQLERRM); END; This procedure is called UpdateCourse. It has one parameter called name_in. The procedure will lookup the course_number based on course name. If it does not find a match, it defaults the course number to 99999. It then inserts a new record into the student_courses table.

SQL> ed Wrote file afiedt.buf

1 2 3 4 5 6 7 8 9

CREATE OR REPLACE FUNCTION function_name (p_sql IN VARCHAR2) RETURN NUMBER IS exec_time DATE; v_cnt NUMBER; BEGIN exec_time := sysdate; EXECUTE IMMEDIATE ('SELECT COUNT(*) FROM ('||p_sql||')'); RETURN (sysdate-exec_time)*(24*60*60);

10* END function_name; SQL> /

Function created.

SQL> var num_secs number; SQL> exec :num_secs := function_name('select * from emp');

PL/SQL procedure successfully completed.

SQL> print num_secs;

NUM_SECS ---------0

SQL>

You might also like