oracle procedure 开发
1、建立过程的语法:
CREATE [OR REPLACE] PROCEDURE 过程名
[(arg1 [mode] datatype[,......])] --当指定参数数据类型时,不能指定其长度。mode值:in(默认)、out、in out。
IS|AS
pl/sql;
例1、无参过程
SQL> CREATE OR REPLACE PROCEDURE hx_01 --建立过程hx_01
2 is
3 begin
4 dbms_output.put_line(sysdate);
5 end;
6 /
Procedure created
在pl/sql调用过程有两种方法:EXECUTE(exec)、call
exec hx_01;或call hx_01();
输出:12-4月 -10
例2、带有3个in参数的过程
SQL> create or replace procedure hx_02 --创建过程hx_02
2 (v_no in v_dept.deptno%type,v_name in v_dept.dname%type,v_loc v_dept.loc%type)
3 as
4 begin
5 insert into v_dept values(v_no,v_name,v_loc);
6 end;
7 /
Procedure created
SQL> create table v_dept as select * from dept where 1<>1;
Table created
SQL> select * from v_dept;
/
DEPTNO DNAME LOC
------ -------------- -------------
SQL> call hx_02('1','研发部','中国'); --执行过程
Method called
SQL> select * from v_dept;
DEPTNO DNAME LOC
------ -------------- -------------
1 研发部 中国
例3、带有2个in参数、1个in out参数
SQL> create or replace procedure hx_04 --创建过程hx_04
2 (v_no in v_dept.deptno%type,v_name in v_dept.dname%type,v_loc in out varchar2)
3 as
4 begin
5 v_loc:='部门号: '||v_no||' 部门名: '||v_name||' 部门位置: '||v_loc;
6 end;
7 /
Procedure created
SQL> var n varchar2(100);
SQL> exec :n:='中国';
PL/SQL procedure successfully completed
n
---------
中国
SQL> call hx_04('1','项目部',:n); --执行过程
Method called
n
---------
部门号: 1 部门名: 项目部 部门位置: 中国
例4、带有2个in参数,1个out参数
SQL> create or replace procedure hx_05 --创建过程hx_05
2 (v_no in v_dept.deptno%type,v_name out v_dept.dname%type,v_loc out varchar2)
3 as
4 begin
5 SELECT DNAME,LOC INTO V_NAME,V_LOC FROM v_DEPT WHERE DEPTNO=V_NO;
6 end;
7 /
Procedure created
SQL> var a varchar2(10);
SQL> var b varchar2(10);
SQL> exec hx_05(1,:a,:b); --执行过程
PL/SQL procedure successfully completed
a
---------
研发部
b
---------
中国
2、删除过程
drop procedure 过程名;