现因工作需要在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
; ;
只是个思路,