当前位置: 代码迷 >> Informix >> 急求informix存储过程解决办法
  详细解决方案

急求informix存储过程解决办法

热度:6439   发布时间:2013-02-26 00:00:00.0
急求informix存储过程
现因工作需要在informix中写个存储过程,但是我以前只在sybase中写过,不熟悉informix的语法,请大家帮忙写一下,要求实现如下功能:table1和table2是结构完全相同的两张表,要求存储过程实现从table2中取出blbz1='4'(其中blbz1是个字符型字段)的数据,并将得到的数据逐条按照table1的一个唯一索引的字段去table1中查找jfbz字段的值,如果jfbz为0就删除table1中的记录,然后将table2中的记录插入table1,并将table2中该记录的blbz1更新为'5',如果jfbz不为0就处理table1数据,直接更新table2中的blbz1为'6'就可以了。
------解决方案--------------------------------------------------------
Informix的存储过程中不能直接使用游标。

可用foreach select * from table1来做。
------解决方案--------------------------------------------------------
DROP PROCEDURE "informix".sp_bo1h110;

CREATE PROCEDURE "informix".sp_bo1h110(  as_gubun char(1), as_year char(04))   -- 参数自己定义




returning  char(12),              返回参数自己定义                                
                    date ,
                   char(1)
                
 ; 

------------------------------------------------------------------------------------------------------
define ws_badjno char(12);               变量自己定义
define wd_baddat date;
define ws_baduh char(1);
define wde_badqty decimal(12,0);
define wde_todoqt decimal(12,0);

SET OPTIMIZATION LOW;
--set debugfile to '/usr1/informix/aaa1.txt';
--trace    on;


foreach

select 1,2,3,...............   --字段名字
into  l1,l2,l3 .............  --变量名字
from table2
where blbzl = '4;

select jgbz 
into   ls_jgbz   ---变量名字
from table1
wherer  -字段名字 = --变量名字

if  ls_jgbz =0 then  
delete from table1 where ------
insert into table1 ()    --  table2中的值

update table2 set blbzl =5  where ----------
else
update table2 set blbzl =6  where ----------

end  foreach



END PROCEDURE
;                                                                               ;
只是个思路,
  相关解决方案