Я использую код токенизатора строки, как показано ниже, — это было из моего предыдущего вопроса. Он отлично работает без QUALIFIER, но как только я добавляю к нему QUALIFIER KGT (имя схемы), я получаю сообщение об ошибке:
THE CLAUSES ARE MUTUALLY EXCLUSIVE. SQLCODE=-628, SQLSTATE=42613, DRIVER=4.17.36 SQL Code: -628, SQL State: 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
DB2 11 в Windows
@Ryan Пожалуйста, предоставьте ссылку на документацию DB2, где ключевое слово QUALIFIER
разрешено для создания функции SQL scalar
.
DB2 11. Здесь упоминается - Для системного именования функция будет создана в схеме, указанной квалификатором. Если квалификатор не указан: Если значение специального регистра CURRENT SCHEMA равно *LIBL, функция будет создана в текущей библиотеке (*CURLIB). В противном случае функция будет создана в текущей схеме. ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/db2/…
Этот синтаксис (ОПРЕДЕЛИТЕЛЬ) действителен для Db2 for Z/OS только в определенных случаях. Это не относится к серии i или LUW. Обращаясь за помощью по Db2, вы тратите наше время, если не указываете платформу своего Db2-сервера. Вы можете указать платформу либо в тексте, либо в тегах (есть специальные теги для db2-400 (i-series), или db2-z/os, или dbw-luw.
@Ryan Еще одно предложение: если вы работаете с одной из трех DB2 (Db2 for LUW
в вашем случае), не используйте документацию от другой (DB2 for IBM i
, как вы указали в комментарии выше). Используйте соответствующий: CREATE FUNCTION (скаляр SQL, таблица или строка)
DB2 для IBM i не поддерживает такой синтаксис XPATH. Это работает в Db2 для LUW, но не в DB2 для IBM i.
Ключевое слово QUALIFIER
не упоминается как допустимое в операторе CREATE FUNCTION
в обеих этих версиях DB2.
Какая операционная система работает на вашем сервере Db2? (z/os, i-серия, linux/unix/windows)?