Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 Проверка процедур в пакете  [new]
CyberMax
Member

Откуда: Хабаровск
Сообщений: 1435
При компиляции ХП есть сообщения от парсера. Например, "Variable 'ID' declared, but never used". При компиляции пакета подобных сообщений нет. Можно ли сделать такое?
9 окт 20, 09:28    [22211247]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
Можно.
9 окт 20, 14:17    [22211481]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
А можно убрать сообщение
автор
Value assigned to 'var' never used
для переменных, которые используются для получения выходных параметров процедур?
EXECUTE PROCEDURE sp_test RETURNING_VALUES (:var);
Переменная var мне не нужна, но без нее процедуру не вызовешь. Проблема как для пакетов так и для обычных процедур

Сообщение было отредактировано: 28 окт 20, 18:05
28 окт 20, 18:09    [22222506]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
CyberMax
Member

Откуда: Хабаровск
Сообщений: 1435
_Vasilisk_
но без нее процедуру не вызовешь

Почему не вызовешь? При "EXECUTE PROCEDURE sp_test" что сервер говорит?
29 окт 20, 06:10    [22222728]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Проблема как для пакетов так и для обычных процедур


Я не вижу проблемы. Это предупреждение, а не ошибка.

Сообщение было отредактировано: 29 окт 20, 08:26
29 окт 20, 08:30    [22222749]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
CyberMax
Почему не вызовешь? При "EXECUTE PROCEDURE sp_test" что сервер говорит?
CREATE OR ALTER PROCEDURE sp_d_test
RETURNS (
  out_res INTEGER)
AS
BEGIN
  out_res = 0;
END
CREATE OR ALTER PROCEDURE sp_d_test2
AS
BEGIN
  EXECUTE PROCEDURE sp_d_test;
END
This operation is not defined for system tables.
unsuccessful metadata update.
CREATE OR ALTER PROCEDURE SP_D_TEST2 failed.
Dynamic SQL Error.
Output parameter mismatch for procedure SP_D_TEST.

IBExpert
Я не вижу проблемы.
Проблема в том, что при большом количестве таких предупреждений можно пропустить нужное. И предупреждение не имеет смысла, т.к. его невозможно убрать никакой модификацией кода
29 окт 20, 13:47    [22222893]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
CyberMax
Member

Откуда: Хабаровск
Сообщений: 1435
_Vasilisk_,

Понятно. Я тестил просто "EXECUTE PROCEDURE", не в ХП.
Кстати, если в SP_D_TEST сделать 3 выходных строки, и выполнить ее через EXECUTE PROCEDURE, то вернется только первая строка, про multiple rows молчок. Не знаю, баг это или фича.
29 окт 20, 14:31    [22222937]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
И предупреждение не имеет смысла


Смысл там есть, и он простой: значение переменной не используется. Ты мне как предлагаешь разбираться-то, когда нужно это предупреждение показывать, а когда не нужно? Телепатически?
29 окт 20, 14:35    [22222946]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 12343
IBExpert
Телепатически?
Вполне конкретное условие
_Vasilisk_
для переменных, которые используются для получения выходных параметров процедур
29 окт 20, 15:14    [22222981]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
CyberMax

Кстати, если в SP_D_TEST сделать 3 выходных строки, и выполнить ее через EXECUTE PROCEDURE, то вернется только первая строка, про multiple rows молчок. Не знаю, баг это или фича.


EXECUTE PROCEDURE возвращает не записи. И если в процедуре есть SUSPEND, то на нем выполнение и завершится, ибо EXECUTE PROCEDURE ничего не фетчит.
29 окт 20, 15:17    [22222983]     Ответить | Цитировать Сообщить модератору
 Re: Проверка процедур в пакете  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 3331
_Vasilisk_
Вполне конкретное условие
_Vasilisk_
для переменных, которые используются для получения выходных параметров процедур


Ну, то есть, если тебе в данном случае предупреждение не нужно, то оно никому не нужно. Эту логику я давно понял, но она кривая.
29 окт 20, 15:18    [22222984]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить