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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top