powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Непонятная передача параметров для хранимок на z/OS по CLI
1 сообщений из 1, страница 1 из 1
Непонятная передача параметров для хранимок на z/OS по CLI
    #36898331
Butic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть
z/Linux с полностью установленной системой DB2 v9.7
DB2 z/OS - доступ сконфигурирован и все через клиента db2 работает
То есть из коммандной строки db2 подсоединяется

Есть пример от IBM spcall.c (от 9.7) которая использует CLI
Работает - в смысле запускает процедуры и возращает результат
Тот же spcall подсоединяется и к DB2 z/OS - и здесь происходит непонятно что с параметрами

Простая процедура ( почищена от комментов которыми пытались отловить что не работает )
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE PROCEDURE proc_test1_db2(
			   OUT p_out         INTEGER
			   ,IN p_num         INTEGER
--             ,IN p_name        VARCHAR(128)
)
   DYNAMIC RESULT SETS  1 
   LANGUAGE SQL
P1: BEGIN

   DECLARE v_cursor_statement VARCHAR( 1000 );
   DECLARE v_cursor_stmt STATEMENT;
   DECLARE v_out_cursor  CURSOR WITH RETURN FOR v_cursor_stmt;


   IF p_num IS NULL THEN
	  SIGNAL SQLSTATE 'ERROR' SET MESSAGE_TEXT='p_num is null';
   END IF;

END P1
Вызов
Код: plaintext
./spcall -d db -u user -p pass esf2.proc_test1_db2  10 
Дает
Код: plaintext
1.
2.
3.
4.
5.
6.
cliRC = - 1 
  line  =  579 
  file  = spcall.c

  SQLSTATE          = ERROR
  Native Error Code = - 438 
[IBM][CLI Driver][DB2] SQL0438N  Application raised error with diagnostic text: "p_num is null".  SQLSTATE=ERROR

При этом - та же программа без перекомпиляции - подсоединение к DB2 z/Linux выдает правильный результат
А сама процедура правильно отрабатывает если ее запустить из db2 клиента

Другая процедура - тоже короткая до не могу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE proc_test31_db2(
			   OUT p_out INTEGER, IN p_num  INTEGER
)
P1: BEGIN

	SET p_out = p_num +  1 ;

END P1
z/OS
Код: plaintext
1.
2.
3.
4.
./spcall -d db -u user -p pass esf2.proc_test31_db2  10 
Checking parameter # 0 
Checking parameter # 1 

P_OUT:
z/Linux
Код: plaintext
1.
2.
Checking parameter # 0 
P_OUT:  11 
Checking parameter # 1 

И опять - процедура правильно отрабатывает из db2 клиента

Но есть и процедуры которые работают нормально и там и там
Например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE proc_test3_db2(
			   INOUT p_num         INTEGER
)
P1: BEGIN

	SET p_num = p_num +  1 ;

END P1
В обоих системах для параметра 10 ответ 11 - то есть правильный


Вывод от spcall - почищен потому что дебаг инфо вставлялся на каждом шагу ;)

Какие будут идеи - где что может быть...
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Непонятная передача параметров для хранимок на z/OS по CLI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]