Значения переменных в хранимых процедурах
Добавлено: 11 апр 2005, 12:27
Есть хранимая процедура, которая вызывает другую процедуру и передаёт данные через переменные.
Например:
CREATE PROCEDURE PR1(
)
AS
DECLARE VARIABLE GOD INTEGER;
DECLARE VARIABLE MES INTEGER;
begin
execute procedure PR2 (:GOD,:MES);
end;
CREATE PROCEDURE PR2(
GOD INTEGER,
MES INTEGER
)
AS
DECLARE VARIABLE GOD2 INTEGER;
DECLARE VARIABLE MES2 INTEGER;
begin
INSERT INTO TBL(MS, GD)
VALUES (:MES, :GOD);
end;
В базу TBL заносяться значения null, хотя в переменных первой процедуры значения точно отличные от null.
Если же перед вставкой в PR2 локальным переменным присвоить значения входным и локальные в базу, то всё нормально.
MES2=:MES;
GOD2=:GOD;
INSERT INTO TBL(MS, GD)
VALUES (:MES2, :GOD2);
Выходит нужно дублировать входные и локальные переменные и перед вставкой выравнивать? Это нормально?
А у меня переменных около 15 ...
Firebird 1.5.4731
Например:
CREATE PROCEDURE PR1(
)
AS
DECLARE VARIABLE GOD INTEGER;
DECLARE VARIABLE MES INTEGER;
begin
execute procedure PR2 (:GOD,:MES);
end;
CREATE PROCEDURE PR2(
GOD INTEGER,
MES INTEGER
)
AS
DECLARE VARIABLE GOD2 INTEGER;
DECLARE VARIABLE MES2 INTEGER;
begin
INSERT INTO TBL(MS, GD)
VALUES (:MES, :GOD);
end;
В базу TBL заносяться значения null, хотя в переменных первой процедуры значения точно отличные от null.
Если же перед вставкой в PR2 локальным переменным присвоить значения входным и локальные в базу, то всё нормально.
MES2=:MES;
GOD2=:GOD;
INSERT INTO TBL(MS, GD)
VALUES (:MES2, :GOD2);
Выходит нужно дублировать входные и локальные переменные и перед вставкой выравнивать? Это нормально?
А у меня переменных около 15 ...
Firebird 1.5.4731