Как выполнить sql на основе переменной связывания в DB2 DB2 ZOS

Я пытаюсь выполнить один SQL, состоящий из переменных связывания. Он отлично работает с ORACLE DB, но не с DB2.

Вот пример SQL: (UPPER/UCASE это может быть что угодно)

SELECT Col1 FROM tab1 WHERE Col1 = 'abc' AND (UPPER(Col1) LIKE (UPPER(:1) || '%' ESCAPE '\') ORDER BY 1

Ошибка следующая:

db2 => SELECT Col1 FROM tab1 WHERE Col1 = 'abc' AND (UPPER(Col1) LIKE (UPPE
R(:1) || '%' ESCAPE '\') ORDER BY 1
SQL0104N  An unexpected token "1" was found following "".  Expected tokens mayinclude:  "<IDENTIFIER>".  SQLSTATE=42601

Я не уверен, в чем здесь проблема. Он не запрашивает ввод значения привязки. В Oracle DB все работает нормально.

В DB2 я использовал командную строку для выполнения запроса. Для Oracle я использовал разработчика ORACLE SQL.


person cpp_learner    schedule 28.05.2019    source источник
comment
Какую командную строку вы имеете в виду? Если вы используете командную строку оболочки в Windows, Linux или Unix (при подключении к удаленной базе данных на z/os), то она не предлагает запрашивать маркеры параметров. Oracle-SQL-Developer должен иметь возможность работать с удаленными серверами Db2-for-Z/O при правильной настройке и лицензировании.   -  person mao    schedule 28.05.2019
comment
Да, в настоящее время я использую командную строку Windows cmd. Итак, вы предлагаете использовать Oracle-SQL-Develper для подключения к DB2? не могли бы вы предоставить мне, есть ли какой-либо справочный документ для настройки соединения между Oracle SQL и Db2   -  person cpp_learner    schedule 29.05.2019


Ответы (1)


Вы используете интерактивный CLP для Db2 в Microsoft Windows при подключении к удаленной базе данных Db2-for-Z/OS.

Этот интерфейс CLP не имеет никаких функций для запроса значений переменных хоста в динамическом SQL. Вот почему вы получаете сообщение об ошибке.

Вы можете либо использовать альтернативный интерфейс (например, IBM Data Studio или многие другие интерфейсные инструменты базы данных на основе Java), либо продолжать использовать Oracle-SQL-Developer для доступа к Db2 для Z/OS.

Вы можете настроить 'Oracle SQL Developer' для использования драйвера jdbc Db2 типа 4 (db2jcc4.jar) вместе с файлом лицензии для Db2 для Z/OS ('db2jcc_license_cisuz.jar'). Вам нужно будет получить файл лицензии Db2 у администратора базы данных мейнфрейма или у Passport-Advantage, или, в качестве альтернативы, подключиться через сервер шлюза Db2-connect (в этом случае вам не понадобится отдельный файл лицензии на рабочей станции, на которой работает Oracle-SQL-Advantage). Разработчик).

Однако степень, в которой каждый такой инструмент понимает Db2-for-Z/OS, различается, поэтому, если вы сталкиваетесь с проблемами, которые не можете легко обойти, вместо этого используйте бесплатную IBM Data Studio, которая работает с Db2-for-Z/OS, и Db2-for-i и Db2 для LUW.

Настройка SQL-Developer для доступа к Db2 широко документирована, в том числе на этом веб-сайте, а также с помощью Oracle. Так что изучайте, это не программирование, а конфигурация. Stackoverflow предназначен для вопросов по программированию.

person mao    schedule 29.05.2019
comment
Да. У меня работает на 80%. Теперь я могу видеть окно конфигурации DB2 в Oracle SQL Developer. Но я застрял на установлении соединения, выдавая следующую ошибку. Произошла ошибка при выполнении запрошенной операции: [jcc][t4][2057][11264][3.72.24] Сервер приложений отклонил установление соединения. Предпринята попытка доступа к базе данных DBNAME, которая либо не найдена, либо не поддерживает транзакции. ERRORCODE=-4499, SQLSTATE=08004 Код поставщика -4499 - person cpp_learner; 30.05.2019