SQL存储过程“默认参数值”

问题描述:

我试图在存储过程中设置“默认参数值”。 我知道语法类型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://*.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

不能明确做,但在某些情况下,您可以模拟它。我刚才有一个这样的情况,其中我想要一个默认值的参数在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; 

希望这有助于!