SQLCode -991 при попытке чтения из таблицы DB2 - PullRequest
0 голосов
/ 05 июля 2018

Я создал и скомпилировал программу в Cobol, но при попытке запустить и протестировать ее с помощью задания JCL, я получаю эту ошибку при чтении вывода. (Программа компилируется и сама работа выполняется без ошибок)

SQLCODE = -991, ОШИБКА: ПРИЗНАК ПРИЛОЖЕНИЯ НЕ МОЖЕТ УСТАНОВИТЬ НЕПРАВИЛЬНОЕ СОЕДИНЕНИЕ ИЛИ ОТКРЫТОЕ В DB2. RC1 = 0008 RC2 = 00F30034

SQLSTATE = 57015

Теперь я не понимаю, почему возникает эта ошибка. База данных DB2 запущена и работает, я могу получить к ней доступ сам. Я также не могу найти ошибку в своем программном коде. К сожалению, поиск в Google не дает мне ясного решения, все, что я могу найти, это то, что проблема заключается либо в задании на компиляцию программы, либо в jcl для ее запуска, либо в самой DB2.

1 Ответ

0 голосов
/ 05 июля 2018

Вы сделали привязку и сработало ли это !!!, Ошибка указывает на то, что план не существует или не авторизован .
Вам нужно - поговорить с людьми на вашем сайте о процессе компиляции / связывания и о том, кто санкционирует

Если вы не знаете, что такое процесс компиляции Mainframe Cobol / DB2, попробуйте чтение это

В основном --->

                                 Cobol program 
    Cobol DB2 Program ---+---->  with no  SQL   ---> Compile ----->  Executable
                         |       but calls Plan  
                         |
                         +---->  DBRM (SQL)   -----> Bind   ------>  DB2 Plan    

Это план , которому требуется DB2-авторизация для запуска SQL !!! Возможно, вам удастся авторизовать план, или вам, возможно, понадобится просмотреть администратор базы данных

С DB2 COBOL есть Co-Compiler (был прекомпилятором), который удаляет SQL и создает DBRM (в основном это специальная процедура SQL).

Это связывание, которое обрабатывает DBRM (SQL) и создает планы доступа DB2


Это может показаться слишком длинным после Java и т. Д. Но есть некоторые преимущества

  • SQL обрабатывается заранее, а не во время работы программы
  • Вы можете проверить путь доступа к DB2 в любое время - до / после выполнения. Полезный для анализ проблем с производительностью.
  • Те же пути доступа к DB2 используются от одного прогона к следующему. Это ведет к довольно предсказуемые времена выполнения.
...