免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3411 | 回复: 5
打印 上一主题 下一主题

存储过程如何返回记录集? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-15 10:46 |只看该作者 |倒序浏览
各位高手好1,能否指点我一下如何让informix的存储过程返回记录集?我试着这样写:
create procedure wh_tmp()
select * from wh_gskb into temp wh_tmp;
select * from wh_tmp;
end procedure

但是系统提示  659: INTO TEMP table required for SELECT statement.

论坛徽章:
0
2 [报告]
发表于 2003-09-15 11:16 |只看该作者

存储过程如何返回记录集?

再提一下:由于是提供给多个用户查询,为了避免并发出现问题,所以不能将查询结果插入到一个永久表中,希望可以通过临时表返回结果集。在SQLSERVER中这个功能是可以实现的。我想informix不可能比sqlserver还差吧?希望各位版主帮忙解答一下,给我一点学习informix的信心,现在找一个能解答informix问题的地方太难了

论坛徽章:
0
3 [报告]
发表于 2003-09-15 11:31 |只看该作者

存储过程如何返回记录集?

informix里面用return with resume的语句来返回一个resultset:
FOREACH
SELECT fname, lname, address1, city, state, zipcode
INTO p_fname, p_lname, p_add, p_city, p_state, p_zip
FROM customer
WHERE lname = lastname
RETURN p_fname, p_lname, p_add, p_city, p_state, p_zip
WITH RESUME;
END FOREACH;

论坛徽章:
0
4 [报告]
发表于 2003-09-15 11:39 |只看该作者

存储过程如何返回记录集?

感谢leo_wu兄,再问一下,那在create procedure语句 中的returning后面的参数应该怎么写那?

论坛徽章:
0
5 [报告]
发表于 2003-09-15 11:52 |只看该作者

存储过程如何返回记录集?

returning a char(5),b smallint .....
只要变量数目与返回变量 一致,类型一致即可

论坛徽章:
0
6 [报告]
发表于 2003-09-15 13:47 |只看该作者

存储过程如何返回记录集?

已经测试成功了,感谢leo_wu兄和白云兄!把测试的例子附上供大家参考
drop procedure tmp;
create procedure tmp()
returning decimal(12,2),decimal(12,2),varchar(20);
define a,b decimal(12,2);
define c varchar(20);
select * from gskb into temp tmp;
foreach select sjf_je,cbm_cert,station into a,b,c
        from tmp
        return a,b,c with resume;
end foreach;
end procedure
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP