Sybase ASA 9 procedimento armazenado, use o parâmetro padrão
-
19-09-2019 - |
Pergunta
Eu tenho um procedure'test armazenada' em Sybase ASA com, por exemplo, 4 parâmetros.
par1 INT = 0,
par2 VARCHAR(50) = NULL,
par3 VARCHAR(100) = NULL,
par4 VARCHAR(10) = ''
Agora eu quero executar este procedimento armazenado com par1 como seu valor padrão.
call test(NULL, 'test')
Mas o valor real do par1 eu não 0, mas 1!
Eu também tentei
call test(DEFAULT, 'test')
mas que não é executado.
Solução
1) O primeiro exemplo não funcionou porque você passou em um valor NULL.
2) Eu não estou muito certo de que a sintaxe que você está usando para seu SP (nunca ouviu falar de "par1"), mas usando a sintaxe padrão, o que você precisa fazer é ter parâmetros nomeados em SP e no convite:
Criar teste PROCEDIMENTO (INOUT var1 INT padrão 0,
INOUT var2 VARCHAR(50) DEFAULT NULL, INOUT var3 VARCHAR(100) DEFAULT NULL, INOUT var3 VARCHAR(10) DEFAULT '')
e, em seguida, chamar
teste CALL (var2 = 'test')
Outras dicas
Na sua primeira execução você tem certeza que par1 no procedimento é 1 - Eu acho que é realmente NULL o valor que você passou no
.Os parâmetros predefinidos são usados ??somente se o poarameter não é passado não se tiver sido dado um valor, mesmo que seja NULL.
Assim, você CSEs par3 e PAR4 obter o padrão, mas par1 e par2 obter o que se passa em.