前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >oracle创建简单的存储过程

oracle创建简单的存储过程

原创
作者头像
bug专8
修改2021-01-14 10:51:16
2.4K0
修改2021-01-14 10:51:16
举报

创建基本的存储过程

代码语言: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 numberparam2 in varchar2res out varchar2存储过程参数不带取值范围,类型可以使用任意Oracle中的合法类型;

in表示传入;

out表示输出;

2、变量

cus_param1 numbercus_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;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建基本的存储过程
    • 函数说明
      • 参数说明
        • 1、传入参数
        • 2、变量
    • 创建带判断和事务的存储过程
      • 变量赋值
        • 1、通过select xxx into 变量赋值
        • 2、通过变量:=xxx赋值
      • if判断
        • 提交事物,异常处理,事物回滚
          • 注意,传入的参数不要和sql的属性名同名
            • 1、错误,查询条件不生效
            • 2、正确
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档