2015-06-02 104 views
1

我試圖在存儲過程中設置「默認參數值」。 我知道語法類型1:SQL存儲過程「默認參數值」

CREATE PROCEDURE proc_name @param nvarchar(30) = NULL, @param1 nvarchar(60) = NULL 

我的蟾蜍7.3用mysql 5.1.35是給TYPE 2的語法:當我創建新的程序

`CREATE PROCEDURE name (param_name param_type) 
for e.g: create procedure test (IN name varchar(50)) 

,但我不能找到正確的語法來設置'IN'值

create procedure test (in name varchar(50) = null) 

正在引發語法錯誤。

請告訴我正確的語法來設置類型2 默認參數我已經搜查了很多進出的SO對於這一點,沒有運氣:\

+0

正如我從這個[鏈接]發現(http://stackoverflow.com/questions/982798/is-it-possible-to-have-a-default-parameter-for-a-mysql-stored-procedure) **這仍然是不可能的**您可以在Where子句中添加默認參數,如下所示WHERE id = @id或id =「一些默認值」 –

+0

這是mysql 5.1創建存儲過程文檔:https:// dev .mysql.com/doc/refman/5.1/en/create-procedure.html它沒有提到關於默認聲明:/ – bish

+0

@bish是的,我已經通過了這個和許多文檔,我找不到任何有用的概率。它很糟糕。舊版本可以做到這一點。 N.Molderf謝謝,這可以保證我無法在5.1中完成。 所以我應該使用TYPE1(在我的問題)語法的舊版本?哪個版本最適合這個? – runTimeError

回答

0

不能明確做,但在某些情況下,您可以模擬它。我剛纔有一個這樣的情況,其中我想要一個默認值的參數在IF語句中被檢查。以下是我做的:

screenshot of the solution

在我condAddNewLineTo身體,我有if聲明。由於我的功能是有條件地返回的東西,我只是把我的默認行爲以外的這些if語句。就像這樣:

IF varToCheck = <nonDefaultValue> THEN 
    #some lines of code to execute 
    RETURN <value>; 
END IF; 
# default behavior here 
RETURN <defaultValue>; 

或者,如果不寫存儲函數返回的東西,你可以這樣做:

IF varToCheck = <nonDefaultValue> THEN 
    # some lines of code to execute 
ELSE 
    # some default code 
END IF; 

希望這有助於!