免费注册 查看新帖 |

Chinaunix

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

【向yunzhongyue提问】为何说我是画蛇添足 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-18 10:28 |只看该作者 |倒序浏览
http://bbs.chinaunix.net/thread-1882552-1-1.html
在informix 9.4 中 是不能执行动态sql的,
比如我有需求如果一个传入参数in_para是2005,则调用sp_test_2005
当参数是2006时,调用sp_test_2006,
请问yunzhongyue如何用存储过程实现?
难道这样写么?
if in_para = '2005' then
call sp_test_2005();
end if;
if in_para = '2006' then
calll sp_test_2006();
end if;
如果不是这么简单的逻辑呢?请yunzhongyue回答。

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
2 [报告]
发表于 2011-03-18 21:44 |只看该作者
请问你的那个字符串是怎么生成的?如果是用4GL,可以用PREPARE,EXECUTE这种方式,EC也是一样,如果是SHELL,直接搞用echo xxx|dbaccess 就可以了,如果是其它的语言好像也不用这样的,没必要再弄个存储过程了!

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
3 [报告]
发表于 2011-03-18 21:44 |只看该作者
请问你的那个字符串是怎么生成的?如果是用4GL,可以用PREPARE,EXECUTE这种方式,EC也是一样,如果是SHELL,直接搞用echo xxx|dbaccess 就可以了,如果是其它的语言好像也不用这样的,没必要再弄个存储过程了!

论坛徽章:
0
4 [报告]
发表于 2011-03-19 10:14 |只看该作者
回复 3# yunzhongyue


    恕我孤陋寡闻,据我所知,prepare是在ec中使用的,而之所以建立这个存储过程而不使用shell,因为我没想到也没找到,在shell获知sql执行结果的办法,所以写了这个存储过程,请您指教,比如我需要执行一个sql,得到一批年份,然后执行对应的存储过程例如:sp_test_2005,如果不用ec,有办法实现么,请您一定不吝赐教,非常感谢。

论坛徽章:
0
5 [报告]
发表于 2011-03-19 10:53 |只看该作者
可以直接执行SHELL, 不一定要用过程.像这样简单的用法 我认为不要争了 自己高兴怎么用都行啊 :wink:

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
6 [报告]
发表于 2011-03-19 14:31 |只看该作者
在SHELL中获取SQL结果可以unload到文件中或者用output to pipe "cat" without heading这种方式!
非要写这样子的存储过程吗?太死板了,可以把2005当成一个参数传进去呀。
另外我觉得如果使用这个存储过程,只可以运行一些简单的SELECT,对于INSERT,UPDATE这种语句,因为
没有检测返回值,没办法知道运行结果的!而且不可以把它放在事务当中,一旦里面的SQL或者是外面的SQL
ROLLBACK了,就会造成数据不一致!

论坛徽章:
0
7 [报告]
发表于 2011-03-19 16:19 |只看该作者
在SHELL中获取SQL结果可以unload到文件中或者用output to pipe "cat" without heading这种方式!
非要写这 ...
yunzhongyue 发表于 2011-03-19 14:31



   高手 说的很对 ,想请教 一个问题 如果把tablename和一个文件名 作为参数传入function  执行load/unload

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2017-04-05 11:23:15
8 [报告]
发表于 2011-03-19 16:54 |只看该作者
IDS 11.5之前的版本FUNCTION里确实不支持动态SQL,如果确实非要在FUNCTION里用动态SQL的话,只能是调用其它语言或是使用system fork一个新的进程来处理了!比如像mujian1986 写的那个存储过程,不过unload还好,load的话不能保证数据完整性了!

论坛徽章:
0
9 [报告]
发表于 2011-03-30 17:30 |只看该作者
这个当初不太会用shell和ec,用这个法子取巧,呵呵。还是shell和ec是王道。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP