Sybase ASA 9 Хранимая процедура, используйте параметр по умолчанию - PullRequest
0 голосов
/ 21 августа 2009

У меня есть хранимая процедура 'test' в Sybase ASA, например, с 4 параметрами.

par1 INT = 0,
par2 VARCHAR(50) = NULL,
par3 VARCHAR(100) = NULL,
par4 VARCHAR(10) = ''

Теперь я хочу выполнить эту хранимую процедуру со значением par1 в качестве значения по умолчанию.

call test(NULL, 'test')

Но фактическое значение par1 i не 0, а 1!

Я тоже пробовал

call test(DEFAULT, 'test')

но это не работает.

Ответы [ 2 ]

1 голос
/ 03 сентября 2009

1) Первый пример не сработал, потому что вы передали значение NULL.

2) Я не совсем уверен, какой синтаксис вы используете для его SP (никогда не слышал о «par1»), но используя стандартный синтаксис, вам нужно иметь именованные параметры в SP и в вызове:

Тест CREATE PROCEDURE (INOUT var1 INT DEFAULT 0,

                   INOUT var2 VARCHAR(50)  DEFAULT NULL,

                   INOUT var3 VARCHAR(100) DEFAULT NULL,

                   INOUT var3 VARCHAR(10)  DEFAULT '')

, а затем позвоните

CALL test (var2 = 'test')

0 голосов
/ 22 августа 2009

При первом выполнении вы уверены, что par1 в процедуре равен 1 - я думаю, что это действительно NULL значение, которое вы передали.

Параметры по умолчанию используются только в том случае, если параметр не передан, если ему присвоено значение, даже если оно равно NULL.

Таким образом, в вашей системе пар3 и пар4 получают значение по умолчанию, а пар1 и пар2 получают то, что вы передаете.

...