这个存储过程主要涉及了游标和数组,主要是数组吧。我想把业务介绍一下,以便大家阅读代码,
突然想到写之前自己写了点文码,直接贴这个吧。后面多谢了些注释,都是程序员的语言-你懂的。
后期需求变更的修改的话可能会用到返回结果集:http://blog.163.com/panqbi@yeah/blog/static/13062014920102454315771/
先把参考网站贴出来
最终 要的是这句:open result for sqlText;
以后再说吧,但愿别变更。
思路: 首先找出状态在借出的所有备件的Ids
select id from T_BNS_SP sp where sp_state='借出' succ
使用游标遍历所有的id
将id 拼接成为三个变量
“,”+str
str
str+","
查出相关ownerid
select sm.owner_id from T_BNS_SP_BORROW_MAIN
sm where instr(sm.sp_id ,',834')>0
or
instr(sm.sp_id ,'834,') >0 or sm.sp_id='834';
succ
将sm.owner_id 放入一个数组,返回该数组
===========华丽的分割线==============
--之前需要在命令行里建立好的数组类型
CREATE OR REPLACE TYPE USERID_ARRAY AS VARRAY(50000) of VARCHAR2(10);
--存储过程部分正式开始
create or replace procedure pro_borrow_alarm(user_ids out USERID_ARRAY )
is
user_id
VARCHAR2(20); --使用人,向数组user_ids里面所添加的元素
sp_id
VARCHAR2(10); --配件Id
---where 条件 ;(instr(sm.sp_id ,sp_id_prefix)>0
or
instr(sm.sp_id ,sp_id_suffix) >0
---因为有些人借了两个或多个东西,在数据库字段里sp_id1,sp_id2......的形式表现了出来
sp_id_prefix
VARCHAR2(10);
sp_id_suffix
VARCHAR2(10);
CURSOR CUR_SP_IDS IS --声明显式游标
begin
end ;
/