【问题标题】:Squirrel Client DB2 Stored Procedure Session DelimiterSquirrel Client DB2 存储过程会话分隔符
【发布时间】:2015-12-01 16:05:47
【问题描述】:

当我尝试通过 Squirrel 对 DB2 数据库运行存储过程时,我遇到了一个棘手的问题。 在存储过程中有部分组合了这样的 sql 语句:

SET V_SQL = 'SELECT DISTINCT ' || PARAM_COLUMNNAME || ' FROM '||PARAM_TABLENAME||' WHERE '||PARAM_COLUMNNAME||'<'||PARAM_NUMBER||';';

我更改了会话语句参数; --> @ 正确运行过程调用,但我收到错误消息:

在“”之后发现了一个意外的标记“”。预期的代币可能 包括:“WHERE REP_ID

我猜是因为分隔符';'内部sql 脚本,所以我更改了这样的代码:

SET V_SQL = 'SELECT DISTINCT ' || PARAM_COLUMNNAME || ' FROM '||PARAM_TABLENAME||' WHERE '||PARAM_COLUMNNAME||'<'||PARAM_NUMBER||'@';

然后我收到这条消息:

数字文字“201506@”无效.. SQLCODE=-103, SQLSTATE=42604,DRIVER=3.59.81 SQL 代码:-103,SQL 状态:42604

你有什么想法吗?

松鼠:SQuirreL SQL 客户端快照 20150623_2101 DB2:9.5

感谢和干杯。

【问题讨论】:

  • 动态 SQL 中不需要终止符,因为一次只能运行一条语句:'&lt;'||PARAM_NUMBER;

标签: stored-procedures db2 squirrel-sql


【解决方案1】:

所以最后对我有用的是评论标志: SET V_SQL = 'SELECT DISTINCT' || PARAM_COLUMNNAME || '来自'||PARAM_TABLENAME||' WHERE '||PARAM_COLUMNNAME||'

解释我不知道为什么以这种方式通过数据库引擎,但工作。 谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2014-10-26
    • 2019-11-10
    • 2015-06-09
    相关资源
    最近更新 更多