最近因为项目需要要写存储过程,以前没咋写过,接触到是接触过,在软通的时候接触过,那是华为的项目那个几个存储过程很大很复杂,也很乱,注释也少,看了个大概。最近一个月,前后也写了七八个简单点的存储过程,也对存储过程有了一个简单的认识,其实也不是很难,多查资料,多实践。闲话不扯了,下面主要说一下游标的组合使用,记录下来即便以后长时间不用了忘记。
场景:有几张表,现在根据业务要求要处理表b中的数据,但先要安照一个标准来处理是吧,这个标准又在表a中,a表中的标准有不是一条,现在需要安照a表的标准吧b表的数据都处理一边。这个是业务。
思考:首先要安装a表来处理的话,是不是要循环a表中的数据来处理那?肯定的,那就要先先一个游标来控制a表循环了。接下来要根据a表的标准来分析b表的数据,那按照java的理解应该是在a表的循环中套一个循环来处理b表的数据,其实这里也是一样的,那就还需要一个游标来控制整个里层的循环了,到这就要考虑怎么来嵌套游标循环了,可以百度“oracle 嵌套游标的使用”看看,这里不记录那些了,由于业务需要b表的数据量有比较大,a表的某一个标准也只是b表中的一部分数据,就是说但嵌套循环的时候还需要a表的中那条记录的一些字段信息。这样嵌套的时候考虑的就要多一点了,最后我选择使用带参数的游标来实现,把需要的a表参数传入b表中。
具体例子:
create or replace procedure P_SBZL_BLDY is
--定义变量
v_xlbh SP_DATA_TQI.Xlbh%type;
v_xingb SP_