免费注册 查看新帖 |

Chinaunix

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

请教: CLP -> SQL 程序可否带参数 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-12 09:57 |只看该作者 |倒序浏览
大家好:
   
   我想用 UPDATE 语句经常更新 PF 的字段,写了一个 SQL ,名为 SQLTEST :            

UPDATE MYLIB/PFILE  SET T01SEX='M' WHERE T01CTY='BJ'     

      请问里面的 'BJ' 如何换成一个参数,&PARM 。 如何在 RPG 程序中调用,

或者在 CL 程序中调用。如何传递参数进去 ?  

      我写的CL 程序SQLRUN 如下: 不知道还有其他写法没有 ?      
RUNSQLSTM  SRCFILE(MYLIB/QCLSRC) SRCMBR(SQLTEST)  COMMIT(*NONE)

      请教大家是如何处理这种情况的, 谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-07-12 12:31 |只看该作者
RUNSQLSTM  SRCFILE(MYLIB/QCLSRC) SRCMBR(SQLTEST)  COMMIT(*NONE)
中的SRCMBR只能是文本类型
看看QINGZHOU的帖子。也许对你有点帮助
http://blog.chinaunix.net/u/646/showart.php?id=64467

论坛徽章:
0
3 [报告]
发表于 2006-07-12 14:45 |只看该作者

迷惑

我建立了一个 CLP 文件 SQLRUN : (编译了)
RUNSQLSTM  SRCFILE(MYLIB/QCLSRC) SRCMBR(SQLTEST)  COMMIT(*NONE)

还建立了一个 SQL 文件 SQLTEST :(不用编译)
UPDATE MYLIB/PFILE  SET T01SEX='M' WHERE T01CTY='BJ'     

然后 CALL SQLRUN , 就可以更新库了。

应该不一定要SRCMBR只能是文本类型,QTXTSRC。

我的问题是: 想将 'BJ' 用参数替代,这样就不用每次修改SQLTEST 了。不知道可以么 ?
请大家帮忙!谢谢!

论坛徽章:
0
4 [报告]
发表于 2006-07-13 11:27 |只看该作者
用CL是不行的,用SQLRPGLE吧

论坛徽章:
0
5 [报告]
发表于 2006-07-17 08:26 |只看该作者
SQLRPG代码:
C/EXEC SQL                        
C+ PREPARE SRP1 FROM :STRSQL      
C/END-EXEC                        
*                                
C/EXEC SQL                        
C+ DECLARE C1 CURSOR FOR SRP1     
C/END-EXEC                        
*                                
*< 主処理 >                     
C/EXEC SQL                        
C+ OPEN C1 USING :W#SQF1         
C/END-EXEC                        
C                     画面处理  
C/EXEC SQL      
C+ CLOSE  C1   
C/END-EXEC      

STRSQL是存放SQL语句的变量
W#SQF1是SQL条件项目

[ 本帖最后由 pantierui 于 2006-7-17 08:27 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2006-07-26 16:26 |只看该作者

试试这个

在你的Query Manager profiles中添加删除权限,然后创建qmqry,这时可在cl中使用STRQMQRY SETVAR((VARNAM &VARVALUE)) 。

论坛徽章:
0
7 [报告]
发表于 2006-07-26 17:06 |只看该作者
写一个带参数的sqlcbl, 或者sqlrpg,然后clp调用这个sqlcbl,
调用的时候传入参数,就象调用普通cobol一样。

论坛徽章:
0
8 [报告]
发表于 2006-07-27 10:54 |只看该作者
請教各位,我也這樣用的 我的sqlstr=a(select * from a)+b(where x='1')(兩個字串),
好像執行的還是a,不是sqlstr的内容,在sql中執行是沒問題的,請教各位怎麽解決呀?

论坛徽章:
0
9 [报告]
发表于 2006-07-27 11:35 |只看该作者

解决办法

我后来还是通过,先做一个 SQLRPG ,再用 RPG -- CALL  SQLRPG  PARM(TTT) 这样就可以带上参数了。但是,一定要注意在编译 SQLRPG 的时候,COMMIT 参数要选择 *NONE .否则编译成功了,却老是不执行 SQLRPG 里面的命令!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP