Select语句中用于连接字符串的DB2 Alias

时间:2013-06-21 10:39:34

标签: sql db2

我试图在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

也许你有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

尝试

JOIN desc_table desc1

问题似乎是你没有定义desc1。

如果说明是保留字,请更改名称或将其用双引号括起来。

使用连接字符串周围较低的性能可能会稍微提高性能。

lower( a || b || c )