我已经在谷歌上搜索过了,一直在想“不,这是不可能的”,但这些帖子的日期是2005-2007年,所以我想知道这是不是已经改变了。代码示例:
CREATE PROCEDURE `blah`
(
myDefaultParam int = 0 -- This breaks the code for some reason
)
BEGIN
-- Do something here
END
其中一个解决方案是传递null,然后检查null并设置变量。我不想那样做,我也不应该这样做。如果这是真的,那么MySql开发人员需要觉醒了,因为我可以用MSSQL做更多的事情。
发布于 2009-06-11 18:29:41
这仍然不可能。
发布于 2012-07-10 07:34:56
我们通过在存储过程中添加一个简单的IF语句绕过了这个限制。实际上,每当我们想要在数据库中保存缺省值时,我们都会传递一个空字符串。
CREATE DEFINER=`test`@`%` PROCEDURE `myProc`(IN myVarParam VARCHAR(40))
BEGIN
IF myVarParam = '' THEN SET myVarParam = 'default-value'; END IF;
...your code here...
END
发布于 2015-03-04 22:36:54
SET myParam = IFNULL(myParam, 0);
说明:IFNULL(expression_1, expression_2)
如果expression_1
不是NULL
,则IFNULL
函数返回expression_1
;否则返回expression_2
。IFNULL
函数根据使用的上下文返回字符串或数字。
https://stackoverflow.com/questions/982798
复制相似问题