2009-08-21 20 views
0

J'ai une procédure stockée 'test' dans Sybase ASA avec par exemple 4 paramètres.Sybase ASA 9 Procédure stockée, utiliser le paramètre par défaut

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

Maintenant, je veux exécuter cette procédure stockée avec par1 comme valeur par défaut.

call test(NULL, 'test') 

Mais la valeur réelle de par1 i pas 0, mais 1!

J'ai aussi essayé

call test(DEFAULT, 'test') 

mais cela ne fonctionne pas.

Répondre

1

1) Le premier exemple ne fonctionne pas parce que vous avez passé une valeur NULL. 2) Je ne suis pas sûr de la syntaxe que vous utilisez pour son SP (jamais entendu parler de "par1"), mais en utilisant la syntaxe standard, ce que vous devez faire est d'avoir des paramètres nommés dans SP et dans l'appel:

CREATE PROCEDURE test (INT DEFAULT INOUT var1 0,

    INOUT var2 VARCHAR(50) DEFAULT NULL, 

        INOUT var3 VARCHAR(100) DEFAULT NULL, 

        INOUT var3 VARCHAR(10) DEFAULT '') 

puis appelez

test CALL (var2 = 'test')

+0

[quote] (jamais entendu parler de "par1") [/ quote] qui était juste un exemple d'un nom de paramètre et sa valeur par défaut. – jwdehaan

+0

Oh. Cette. Je supposais que c'est une syntaxe ASA étrange que je n'ai jamais rencontrée (il semble y en avoir plus d'une) – DVK

0

Dans votre première exécution vous êtes sûr que PAR1 dans la procédure est 1 -. Je pense qu'il est vraiment NULL la valeur que vous avez passé dans

Les paramètres par défaut ne sont utilisés que si le poarameter n'est pas passé dans pas si elle a été donné une valeur même si elle est NULL.

Ainsi, en vous CSES par3 et PAR4 obtenir la valeur par défaut, mais PAR1 et PAR2 obtenir ce que vous passez.