【发布时间】:2019-05-23 14:29:21
【问题描述】:
我正在使用如下的字符串标记器代码 - 从我之前的问题中得到它。没有 QUALIFIER 就可以正常工作,但是一旦我将 QUALIFIER KGT(模式名称)添加到它 - 我收到一个错误:
这些条款是互斥的。 SQLCODE=-628,SQLSTATE=42613, DRIVER=4.17.36 SQL 代码:-628,SQL 状态:42613
create function regexp_tokenize_number(
source varchar(1000))
returns table (tok integer)
SPECIFIC regexp_tokenize_number
LANGUAGE SQL
QUALIFIER KGT
DETERMINISTIC
NO EXTERNAL ACTION
return
select tok
from xmltable('for $id in tokenize($s,",") return <i>{string($id)}</i>'
passing cast(source as varchar(1000)) as "s"
columns
tok integer path 'if (. castable as xs:integer) then xs:integer(.) else ()'
) t
Windows 上的 DB2 11
【问题讨论】:
-
哪个操作系统运行您的 Db2 服务器? (z/os, i 系列, linux/unix/windows) ?
-
@Ryan 请提供 DB2 文档的链接,其中允许使用
QUALIFIER关键字创建SQL scalar函数。 -
DB2 11. 这里提到 - 对于系统命名,函数将在限定符指定的模式中创建。如果未指定限定符:如果 CURRENT SCHEMA 特殊寄存器的值为 *LIBL,则将在当前库 (*CURLIB) 中创建函数。否则,该函数将在当前模式中创建。 ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/db2/…
-
该语法 (QUALIFIER) 仅在特定情况下对 Db2 for Z/OS 有效。它对 i 系列或 LUW 无效。在寻求有关 Db2 的帮助时,如果您没有指定您的 Db2 服务器平台,那么您就是在浪费我们的时间。您可以在文本中或在标签中指明平台(db2-400(i 系列)或 db2-z/os 或 dbw-luw 有特定的标签。
-
@Ryan 另一个建议:如果您使用 3 个 DB2 中的一个(在您的情况下为
Db2 for LUW),那么不要使用来自另一个的文档(DB2 for IBM i,正如您在评论中提供的那样多于)。使用对应的:CREATE FUNCTION (SQL scalar, table, or row)
标签: function stored-procedures db2 db2-luw