我试图在DB2存储过程中执行以下SELECT语句:
FOR c AS ( SELECT o.id id
,o.col1 col1
,o.title title
,o.locale locale
,lower(desc1.detail1) CONCAT lower(desc1.detail2) CONCAT lower(desc1.detail3) CONCAT lower(desc1.detail4) description
,lower(absc1.detail1) || lower(absc1.detail2) || lower(absc1.detail3) || lower(absc1.detail4) abstract
FROM table_name o
INNER JOIN desc_table ON o.id = desc1.some_id
AND o.desc1 = desc1.id
INNER JOIN table_detail absc1 ON o.id = absc1.owner_id
AND o.abstract = absc1.id
WHERE o.id = xid
) DO
并发生以下错误:
[IBM][CLI Driver][DB2/NT64] SQL0789N The data type for parameter or SQL variable "DESCRIPTION" is not supported in the routine, compound SQL statement, or parameter list of a cursor value constructor. LINE NUMBER=... SQLSTATE=429BB
问题出在lower(desc1.detail1) CONCAT lower(desc1.detail2) CONCAT lower(desc1.detail3) CONCAT lower(desc1.detail4) description
行
似乎别名description
不适用于连接字符串。
同样的情况是:
lower(absc1.detail1) || lower(absc1.detail2) || lower(absc1.detail3) || lower(absc1.detail4) abstract
也许你有什么建议吗?
感谢。
答案 0 :(得分:1)
尝试
JOIN desc_table desc1
问题似乎是你没有定义desc1。
如果说明是保留字,请更改名称或将其用双引号括起来。
使用连接字符串周围较低的性能可能会稍微提高性能。
lower( a || b || c )