【发布时间】:2019-07-26 18:38:31
【问题描述】:
在 SQLRPGLE 中的 IBMi(数据库是 DB2 for i)上,我有一个程序可以将大型 SQL 语句构建到我想运行的变量中。
当我尝试将它作为变量运行时,我收到一个令牌错误
一些背景
这是一个有效的示例,因为它不使用变量
Exec SQL
Create table MyLib/MyFile as(select * from XXLIB/XXFILE)
DATA INITIALLY DEFERRED REFRESH DEFERRED
maintained by user;
当我将它保存在像 @SQLStm 这样的变量中,然后尝试作为 SQL 执行时
Exec SQL
:@SQLStm;
我得到了错误 令牌:无效。有效令牌: .
我也愿意接受不同的方法 https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/cl/runsqlstm.htm 像 RUNSQLSTM SRCFILE(MYLIB/MYFILE) SRCMBR(MYMBR)
也许有一种方法可以获取变量并将其保存到源成员? 然后在源成员上使用 RUNSQLSTM
显示一些代码: 变量的定义
d @SQLStm s A Len(6144) Varying(4)
即使尝试将 SQL 语句的一部分作为变量
@SQLStm = select * from XXLIB/XXFILE;
然后尝试:
Exec SQL
Create table MyLib/MyFile as( :@SQLStm)
DATA INITIALLY DEFERRED REFRESH DEFERRED
maintained by user;
我得到了错误 令牌:无效。有效令牌: .
我希望 SQLRPLE 能够编译 而不是 SQL 预编译失败。
MSG ID SEV 记录文本
SQL0104 30 236 位置 31 令牌:无效。有效令牌:
.
消息摘要
总信息警告错误严重终端
1 0 0 0 1 0
在源代码中发现 30 级严重性错误
【问题讨论】: