oracle 存储过程中文,Oracle 存储过程语法及使用

注意事项

1、存储过程参数不带取值范围,in表示传入,out表示输出,类型可以使用任意Oracle中的合法类型。

2、变量带取值范围,后面接分号

3、在判断语句前最好先用count(*)函数判断是否存在该条操作记录

4、用select [...] into[...],给变量赋值

5、在代码中抛异常用 raise+异常名

Oracle存储过程的基本语法

create [or replace] procedure 过程名

(

-- in表示输入,out表示输出

p1 in|out datatype,

p2 in|out datatype,

...

pn in|out datatype

) is

变量1 类型(值范围);

变量2 类型(值范围);....--声明部分

begin

....--过程体

end;

敝司将不同模块需要用到的存储过程放到对应的package中,因此,可以粗暴地将package理解为一个class,而procedure就是类对应的function,这样并不十分严谨,Oracle有它自己的Function,并且可以与procedure一起置于package下。

其中in表示入参,out就是出参或者说运行结果了。

在上面的“声明部分”,可以声明我们需要用到的变量及其类型和范围,变量可以是调用其他存储过程来赋值。

过程体就是具体的方法体实现,入参以及声明体中的变量可以在这个部分使用。

关于游标Cursor

Cursor可以用来作为一个中间TEMP值使用,依然可以在上述声明部分使用。例如这样一个场景,我们需要先行查询一个结果集,并对其中元素遍历,那么CURSOR结合LOOP体就十分有用,事实上敝司的CURSOR也是这么用的。

其语法如下:

-- 声明游标

declare cursor cursor_name(游标名)

is select_statement(查询语句);

--使用游标

open cursor_name;

--关闭游标 请注意使用完后一定要关闭

close cursor_name;

--从游标中获取数据

fetch cursor_name into v_record--变量

遍历CURSOR中数据的实例

open cur_xsjbxx;--打开游标

loop

FETCH cur_name

INTO ls_curinfo;--获取记录值

EXIT WHEN cur_name%NOTFOUND;

dbms_output.put_line('游标信息ID:' || ls_curinfo.id || ',名称:' ||

ls_curinfo.name);

end loop;

close cur_xsjbxx;--关闭游标

总结:

/**注意事项:

* 1、存储过程参数不带取值范围,in表示传入,out表示输出,类型可以使用任意Oracle中的合法类型。

* 2、变量带取值范围,后面接分号

* 3、在判断语句前最好先用count(*)函数判断是否存在该条操作记录

* 4、用select [...] into[...],给变量赋值

* 5、在代码中抛异常用 raise+异常名

*/

create [or replace] procedure 过程名

( p1 in|out datatype,

p2 in|out datatype,

...

pn in|out datatype

) is

-- 变量1 类型(值范围);

-- 变量2 类型(值范围);....--声明部分

vs_msg VARCHAR2(4000); --错误信息变量

--定义游标(简单的说就是一个可以遍历的结果集)

cursor cur_1 IS

select...

form...

where...;

begin

open cur_1;

loop

--从游标中获取数据

fetch cursor_name into v_record--变量

....--过程体

end loop;

close cur_1;

COMMIT;

Exception

when others then

DBMS_OUTPUT.put_line('sqlcode : ' || sqlcode);

DBMS_OUTPUT.put_line('sqlerrm : ' || sqlerrm);

rollback;

--异常处理

close cur_1;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值