首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Informix >

急求informix存储过程,该如何解决

2012-03-05 
急求informix存储过程现因工作需要在informix中写个存储过程,但是我以前只在sybase中写过,不熟悉informix

急求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);

SETOPTIMIZATION 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
; ;
只是个思路,

热点排行