创建基本的存储过程代码语言:javascript复制create or replace procedure test1(
param1 in number, --传入参数1
param2 in varchar2, --传入参数2
res out varchar2, --返回参数
...
) is
cus_param1 number; --自定义变量1
cus_param2 varchar2(20); --自定义变量2
begin
null; --处理逻辑的sql
end test1;函数说明create or replace procedure test1:创建一个名称为test1的存储过程, 如果存在就覆盖它;
is:关键词,表明后面将跟随一个PL/SQL体;
begin:关键词,表明PL/SQL体的开始;
null;:PL/SQL处理逻辑的sql,至少需要有一句。此处为null表示什么也不做;
end:关键词,表明PL/SQL体的结束;
参数说明1、传入参数param1 in number,param2 in varchar2,res out varchar2存储过程参数不带取值范围,类型可以使用任意Oracle中的合法类型;
in表示传入;
out表示输出;
2、变量cus_param1 number,cus_param2 varchar2(20)变量带取值范围,类型可以使用任意Oracle中的合法类型;
创建带判断和事务的存储过程代码语言:javascript复制create or replace procedure test2(bf_id in number,status in number,res out varchar2) is
count_num number;
begin
select count(*) into count_num from sft_sys_bfinfo where bfid=bf_id;
if count_num > 0 then
begin
update sft_sys_bfinfo set tj_cfg=status where bfid=bf_id;
end;
end if;
commit;
res := '成功';
Exception
When others then
Dbms_output.Put_line(sqlerrm); --打印输出错误
Rollback; --回滚事务
dbms_output.put_line('存储过程执行异常,事物回滚!');
res := '失败';
end test2;变量赋值1、通过select xxx into 变量赋值代码语言:javascript复制select count(*) into count_num from sft_sys_bfinfo where bfid=bf_id;2、通过变量:=xxx赋值代码语言:javascript复制res :='成功'if判断代码语言:javascript复制if count_num > 0 then
begin
update sft_sys_bfinfo set tj_Cfg=status where bfid=bf_id;
end;
end if;提交事物,异常处理,事物回滚代码语言:javascript复制commit;代码语言:java复制Exception
When others then
Dbms_output.Put_line(sqlerrm); --打印输出错误
Rollback; --回滚事务
dbms_output.put_line('存储过程执行异常,事物回滚!');
res := '失败';注意,传入的参数不要和sql的属性名同名1、错误,查询条件不生效代码语言:javascript复制select count(*) into count_num from sft_sys_bfinfo where bfid=bfid;2、正确代码语言:javascript复制select count(*) into count_num from sft_sys_bfinfo where bfid=bf_id;