Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / дефолтнае значения в дараметрах хранимых процедур / 5 сообщений из 5, страница 1 из 1
08.03.2018, 12:08
    #39612191
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дефолтнае значения в дараметрах хранимых процедур
Всем привет.

для апдейта базы даннх потребовалось сделать механизм рекомпиляции процедур и триггеров (к сожаленую, в Firebird нет команды "recompile"). И наткнулся на следующую загадку приподы, которую никак объяснить не могу:
В структуре данных имеется процедура с параметрами по умолчанию и коллега использует такую возможность в другой процедуре.
При компиляции в IBExpert никаких проблем не возникает ни при SQL-Statement, ни при SQL-Executive.

В Delphi-коде выкидывает следующую ошибку:

Код: plaintext
1.
2.
3.
4.
Invalid token.
SQL error state =07001
Invalid request BLR at offset 98.
Input parameter mismatch for procedure SP_CHECK_ARTIKEL_N.
Error while parsing procedure SP_CHECK_EINL_NL's BLR.



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE OR ALTER PROCEDURE SP_CHECK_EINL_NL (
ARTIKELCODE VARCHAR(20)
 )

RETURNS (
OUT_CHECK INTEGER
 )

AS
declare variable VCHECK1 integer;
declare variable VCHECK integer;
begin
  OUT_CHECK = 0;

  select OUT_LAGER_STATUS
  from  SP_CHECK_ARTIKEL_N(:ARTIKELCODE) 
  into :vcheck
  ;


  --vielleicht Prozedur vorziehen und zweite Prozedur nur aufrufen wenn man im zeitlichen Fenster ist
  select OUT_LAGER_STATUS
  from SP_FIRST_AHT_LOAD
  into :vcheck1
  ;


  IF ( (vcheck=1) and (vcheck1=1) )  then OUT_CHECK = 1;

  suspend;
end



Процедура SP_CHECK_ARTIKEL_N имеет следующий заголовок:
create or alter procedure SP_CHECK_ARTIKEL_N (
P_ARTIKELCODE varchar(20),
P_DEL_ARTIKEL integer = 0 )
returns (
OUT_LAGER_STATUS integer)
as
declare variable AHT_LIMIT float;
.....



Если же исправить SP_CHECK_EINL_NL с вызовом второго параметра, то все проходит благополучно.

PS: Изменеие параметра на
P_DEL_ARTIKEL integer default 0

ведет к такому же результату.
...
Рейтинг: 0 / 0
08.03.2018, 12:44
    #39612208
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дефолтнае значения в дараметрах хранимых процедур
svdВ Delphi-коде

Я вангую типичную ошибку новичков: выставление CheckParams в true у TIBSQL.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.03.2018, 13:07
    #39612213
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дефолтнае значения в дараметрах хранимых процедур
Dimitry Sibiryakov,

сорры, забыл указать: в Delphi работа ведется с FIBPlus. Указанного класса там нет.
...
Рейтинг: 0 / 0
08.03.2018, 13:26
    #39612222
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дефолтнае значения в дараметрах хранимых процедур
svd,

CheckParams выключи. При включенном компоненты при prepare начинают сами искать параметры в тексте запроса, и передают их серверу. А такого параметра в тексте dll нет.
...
Рейтинг: 0 / 0
08.03.2018, 13:53
    #39612235
svd
svd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
дефолтнае значения в дараметрах хранимых процедур
Спасибо!
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / дефолтнае значения в дараметрах хранимых процедур / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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