Токенизатор строк DB2

Я использую код токенизатора строки, как показано ниже, — это было из моего предыдущего вопроса. Он отлично работает без 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

Какая операционная система работает на вашем сервере Db2? (z/os, i-серия, linux/unix/windows)?

mao 23.05.2019 16:48

@Ryan Пожалуйста, предоставьте ссылку на документацию DB2, где ключевое слово QUALIFIER разрешено для создания функции SQL scalar.

Mark Barinstein 23.05.2019 16:54

DB2 11. Здесь упоминается - Для системного именования функция будет создана в схеме, указанной квалификатором. Если квалификатор не указан: Если значение специального регистра CURRENT SCHEMA равно *LIBL, функция будет создана в текущей библиотеке (*CURLIB). В противном случае функция будет создана в текущей схеме. ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/db2/…

R M 23.05.2019 16:58

Этот синтаксис (ОПРЕДЕЛИТЕЛЬ) действителен для Db2 for Z/OS только в определенных случаях. Это не относится к серии i или LUW. Обращаясь за помощью по Db2, вы тратите наше время, если не указываете платформу своего Db2-сервера. Вы можете указать платформу либо в тексте, либо в тегах (есть специальные теги для db2-400 (i-series), или db2-z/os, или dbw-luw.

mao 23.05.2019 17:27

@Ryan Еще одно предложение: если вы работаете с одной из трех DB2 (Db2 for LUW в вашем случае), не используйте документацию от другой (DB2 for IBM i, как вы указали в комментарии выше). Используйте соответствующий: CREATE FUNCTION (скаляр SQL, таблица или строка)

Mark Barinstein 24.05.2019 09:00
Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
0
5
339
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

DB2 для IBM i не поддерживает такой синтаксис XPATH. Это работает в Db2 для LUW, но не в DB2 для IBM i.

Ключевое слово QUALIFIER не упоминается как допустимое в операторе CREATE FUNCTION в обеих этих версиях DB2.

Другие вопросы по теме

Похожие вопросы