【发布时间】:2017-10-26 18:09:19
【问题描述】:
我是 DB2 的新手,它在多个 IBM iSeries 机器上运行。我在编写一个存储过程时遇到了一些困难,该存储过程将从表中选择值,其中键字段以参数的值开头。
现在在 MS SQL Server 中我会这样写:
SELECT field FROM table WHERE fieldB like parm + '%'
所以对于我的 DB2 过程,我有:
SELECT field FROM table WHERE fieldB like parm || '%'
我不仅在 IBM 文档中发现了这种语法,还在几个 SO 问题和答案中发现了这种语法。所以我明白了如何将通配符连接到参数值。
不幸的是,当我运行 CREATE PROCEDURE 语句时,我收到以下错误:
[SQL0104] 令牌 PARM 无效。有效令牌: FOR NOT CCSID NORMALIZED。
我什至也尝试过以下操作:
SET [*some declare variable*] = parm|| '%'
和
SET srch = CONCAT(parm, '%');
以及在 WHERE 子句中使用 CONCAT 函数:
WHERE fieldB like CONCAT(parm, '%');
每个都返回相同的错误。
那么我可能做错了什么?
【问题讨论】:
-
你知道你的系统是什么版本吗?
-
是的。大多数运行 V7R2,但至少有一个运行 V6R1。我相信,最终所有系统都将采用 V7R2。
标签: ibm-midrange db2-400