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对于这一点,没有运气:\
答
不能明确做,但在某些情况下,您可以模拟它。我刚才有一个这样的情况,其中我想要一个默认值的参数在IF语句中被检查。以下是我做的:
在我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;
希望这有助于!
正如我从这个[链接]发现(http://stackoverflow.com/questions/982798/is-it-possible-to-have-a-default-parameter-for-a-mysql-stored-procedure) **这仍然是不可能的**您可以在Where子句中添加默认参数,如下所示WHERE id = @id或id =“一些默认值” –
这是mysql 5.1创建存储过程文档:https:// dev .mysql.com/doc/refman/5.1/en/create-procedure.html它没有提到关于默认声明:/ – bish
@bish是的,我已经通过了这个和许多文档,我找不到任何有用的概率。它很糟糕。旧版本可以做到这一点。 N.Molderf谢谢,这可以保证我无法在5.1中完成。 所以我应该使用TYPE1(在我的问题)语法的旧版本?哪个版本最适合这个? – runTimeError