存储过程:一段程序,用于改变数据库对象的状态,可以包含一个或多个行为,往往是将一个表的记录经过处理后放到另一个表。
1、基本语法:
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] TYPE[,....])] {IS | AS } [LOCAL declarations] BEGIN executable statements; [EXCEPTION exception_statements; END procedure_name;
例子:
--/ CREATE OR REPLACE PROCEDURE proc_1 (num number, name varchar2) IS BEGIN insert into emp(empno, ename) values (num, name); END; /
调用:
--/ BEGIN proc_1(1002, '1002'); END; /
2、in和out参数:
in参数表示存储过程的输入参数。out参数表示存储过程的输出参数,输出参数会改变参数的值,传递到调用方的一个变量当中。
例子:
--/ CREATE OR REPLACE PROCEDURE proc_2 (num in number, v_emp out emp%rowtype) IS BEGIN select * into v_emp from emp where empno = num; END; /
调用:
--/ DECLARE var emp%rowtype; BEGIN proc_2(1000, var); dbms_output.put_line(var.ename); END; /
3、同时带in和out参数:
IN OUT模式是IN和OUT方式的组合,又称为输入/输出参数。
当过程被调用的时候,实际参数的值会被传递给过程,形式参数可以被读出和写入。当过程调用结束,控制返回到调用环境时,形式参数的内容被赋予实际的值。
例子:
--/ CREATE OR REPLACE PROCEDURE proc_3(x IN NUMBER, y IN OUT NUMBER) IS v_tmp NUMBER; BEGIN v_tmp := x + y; y := v_tmp; END; /
调用:
--/ DECLARE num1 number :=1; num2 number :=2; BEGIN proc_3(num1, num2); dbms_output.put_line(num2); END; /
4、
存储过程中具体的处理依赖于pl sql的基础语法来实现。