`

Oracle 存储过程

 
阅读更多

查看存储过程:
desc user_procedures;
select text from user_source where name='MYPROC' order by line;

创建存储过程:
--参数默认为in,不能有长度。
create or replace procedure myproc(id in varchar2)
is
name varchar2(10);
begin
select dname into name from dept where deptno=id;
dbms_output.put_line(name);
end;
/

show errors

显示存储过程中的错误。
show errors procedure myproc;

执行存储过程:
declare
tid varchar2(10);
begin
tid:='10';
myproc(tid);
end;
/

或使用execute命令,用于只有输入,没有输出参数,且参数为常量的情况中。
execute myproc(10);

存储过程的输入、输出参数:
create or replace procedure myproc2(id varchar2,name out varchar2)
is
begin
select dname into name from dept where deptno=id;
end;
/

调用:
declare
tid varchar2(10);
tname varchar2(10);
begin
tid:=20;
myproc2(tid,tname);
dbms_output.put_line(tname);
end;
/
IN/OUT参数:
create or replace procedure p
(v_a in number, v_b number, v_ret out number, v_temp in out number)
is
--v_b number,不写默认是in
begin
if (v_a > v_b) then
v_ret := v_a;
else
v_ret := v_b;
end if;
v_temp := v_temp + 1;
end;

调用:
declare
v_ret number(4);
v_temp number(4):=10;
begin
p(100,200,v_ret,v_temp);
dbms_output.put_line(v_ret||','||v_temp);
end;
/

创建函数:
create or replace function sal_tax
(v_sal number)
return number
is
begin
if (v_sal < 2000) then
return 0.10;
elsif (v_sal <2750) then
return 0.15;
else
return 0.20;
end if;
end;
/

调用:
select lower(ename), sal_tax(sal) from emp;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics