欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

急求informix存储过程解决办法

更新时间: 2014-01-05 02:18:48 责任编辑: Author_N1

 

急求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
;                                                                               ;
只是个思路,
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:18:48
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8333/
本文WWW.DOC100.NET DOC100.NET版权所有。