2009-08-21 26 views
0

我在Sybase ASA中有一個存儲過程'test',例如4個參數。Sybase ASA 9存儲過程,使用默認參數

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

現在我想執行此存儲過程與par1作爲其默認值。

call test(NULL, 'test') 

但是par1的實​​際值不是0,而是1!

我也試過

call test(DEFAULT, 'test') 

,但不運行。

回答

1

1)第一個例子沒有工作。

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測試(VAR2 = '測試')

+0

[報價](從來沒有聽說過的 「PAR1」)[/報價] 這只是一個參數名和它的默認值的一個例子。 – jwdehaan 2009-09-11 11:23:15

+0

哦。那。我假設它是我從未遇到過的一些奇怪的ASA語法(似乎不止一種) – DVK 2009-09-11 13:15:12

0

在你第一次執行你確定PAR1在程序1 - 我覺得實在是NULL您傳入的值,如果poarameter未未如果通過

默認參數只用它已被賦予一個值,即使它是NULL。

因此,在您的CSE PAR3和PAR4得到默認,但PAR1和PAR2讓你在傳遞什麼。因爲你在一個NULL值傳遞