oracle 存储过程 初级

create [or replace] procedure procedure_name(argunment in 数据类型,argunment2 out 数据类型,argument3 in out 数据类型)
as[id]
begin
要处理的语句
end;

set serveroutput on 这一句需要在SQLPLUS 下或者 PL/SQL DEV的command窗口下运行

我的第一个oracle存储过程
create or replace
procedure out_time
as
begin
  dbms_output.put_line(systimestamp);
end;
set serveroutput on;
exec out_time;
结果:匿名块已完成
23-5月 -13 02.05.21.753000000 下午 +08:00

第二个存储过程带有in参数
create procedure subtypeday(subId in varchar2)
as
begin
INSERT INTO TBL_KEYEN_SUBTYPE_DAY (ID, TOTAL_EN_STD, KEYEN_ID, TYPE_ID, SUBTYPE_ID, EN_DATE, CREATED_DATE, CREATED_BY, CREATED_PRG_NM, UPDATED_DATE, UPDATED_BY, UPDATED_PRG_NM, MODIFY_COUNT, COUNT_FLAG, TOTAL_EN_ORG)
values (subId, '200', '2', '2', '22', TO_DATE('23-5月 -13', 'DD-MON-RR'), TO_DATE('23-5月 -13', 'DD-MON-RR'), 'sss', 'sss', TO_DATE('23-5月 -13', 'DD-MON-RR'), 'sss', 'sss', '0', '0', '200');
end;
exec subtypeday('4');

第三个存储过程带有in和out
create or replace procedure outsubtype(subid in varchar2,subname out varchar2)
as
begin
select created_by into subname
from TBL_KEYEN_SUBTYPE_DAY
where id=subid;
end;
执行:
set serveroutput on
declare
subid varchar2(32);
subname varchar(32);
begin
outsubtype('4',subname);
dbms_output.put_line(subname);
end;

第四个存储过程
create or replace procedure computee(num1 in out number,num2 in out number)
as
v number;
vv number;
begin
v :=num1/num2;
vv :=mod(num1,num2);
num1:=v;
num2:=vv;
end;
执行:
var v number
var vv number
exec :v :=100
exec :vv :=30
exec computee(:v,:vv);
print v vv
结果:

V - 3

VV -- 10

删除存储过程 :drop procedure 存储过程名称;

posted on 2013-05-23 17:19  明天521  阅读(154)  评论(0)    收藏  举报