过程是执行某些程序的子程序,他是执行特定任务的模块。过程就是命名的PL/SQL程序块。它可以被赋予参数,存储在数据库中,然后有一个应用程序或其他PL/SQL程序调用。
创建过程:
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_list)]
{IS|AS}
[local_declatations]
BEGIN
Executeable_statements
[EXCEPTION]
exception_handlers
END[procedure_name]
其中procedure_name是过程名称,parameter_list是参数列表,local_declatations是局部声明,Executeable_statements 是可执行语句,exception_handlers是异常处理程序。声明部分置于关键字IS和BEGIN之间。过程最后的END关键字可以使用可选的procedure_name结束。
例1
CREATE OR REPLACE PROCEDURE find_emp(emp_no NIMBER)
AS
empname VARCHAR2(20);
BEGIN
SELECT ename INTO empname FROM EMP WHERE empno=emp_no;
END find_emp
执行过程>EXECUTE procedure_name(paramenters_list)
参数IN模式是默认模式。如果未指明参数的模式,则认为参数是IN参数。而对于OUT和IN OUT参数,必须指定。
例2 创建IN模式参数的过程
CREATE OR REPLACE PROCEDURE itemdesc(item_code IN VARCHAR2)
IS
v_itemdesc VARCHAR2(5);
BEGIN
SELECT itemdesc INTO v_itemdesc FROM itemfile WHERE itemcode=item_code;
END
执行过程>EXECUTE itemdesc(‘i201’)
例3 创建OUT模式参数的过程
CREATE OR REPLACE PROCEDURE
test(value1 IN VARCHAR2,value2 OUT NUMBER)
IS
Identity NUMBER;
BEGIN
SELECT ITEMRATE INTO identity FROM itemfile
WHERE itemcode=value1;
IF identity<200 THEN
Value2:=50;
ELSE
Value2:=100;
END IF;
END;
当程序返回值时,只能通过另一个程序查看该值。
DECLARE value2 NUMBER;
BEGIN
Test(‘i202’,value2);
DBMS_OUTPUT.PUT_LINE(‘value2的值为’||TO_CHAR(value2));
END;
创建过程:
CREATE [OR REPLACE] PROCEDURE procedure_name
[(parameter_list)]
{IS|AS}
[local_declatations]
BEGIN
Executeable_statements
[EXCEPTION]
exception_handlers
END[procedure_name]
其中procedure_name是过程名称,parameter_list是参数列表,local_declatations是局部声明,Executeable_statements 是可执行语句,exception_handlers是异常处理程序。声明部分置于关键字IS和BEGIN之间。过程最后的END关键字可以使用可选的procedure_name结束。
例1
CREATE OR REPLACE PROCEDURE find_emp(emp_no NIMBER)
AS
empname VARCHAR2(20);
BEGIN
SELECT ename INTO empname FROM EMP WHERE empno=emp_no;
END find_emp
执行过程>EXECUTE procedure_name(paramenters_list)
参数IN模式是默认模式。如果未指明参数的模式,则认为参数是IN参数。而对于OUT和IN OUT参数,必须指定。
例2 创建IN模式参数的过程
CREATE OR REPLACE PROCEDURE itemdesc(item_code IN VARCHAR2)
IS
v_itemdesc VARCHAR2(5);
BEGIN
SELECT itemdesc INTO v_itemdesc FROM itemfile WHERE itemcode=item_code;
END
执行过程>EXECUTE itemdesc(‘i201’)
例3 创建OUT模式参数的过程
CREATE OR REPLACE PROCEDURE
test(value1 IN VARCHAR2,value2 OUT NUMBER)
IS
Identity NUMBER;
BEGIN
SELECT ITEMRATE INTO identity FROM itemfile
WHERE itemcode=value1;
IF identity<200 THEN
Value2:=50;
ELSE
Value2:=100;
END IF;
END;
当程序返回值时,只能通过另一个程序查看该值。
DECLARE value2 NUMBER;
BEGIN
Test(‘i202’,value2);
DBMS_OUTPUT.PUT_LINE(‘value2的值为’||TO_CHAR(value2));
END;