调用存储过程时,Null表示Integer IN参数

时间:2013-10-13 15:07:32

标签: mysql sql

我有一个存储过程,其中IN参数为INT

有时,当我不需要此IN参数的值时,我需要传递null。但是我收到错误/* SQL Error (1366): Incorrect integer value: 'NULL' for column 'xStatus' at row 2 */如果是INT,我怎么能传递NULL。

CREATE DEFINER=`root`@`localhost` FUNCTION `links`(`xStatus` INT(2))
    RETURNS varchar(2400)
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN

DECLARE output varchar(50);

CASE xStatus WHEN NULL THEN
SET output = 'Is Null';
ELSE
SET output = 'Was not Null';
END CASE;

return output;
END

1 个答案:

答案 0 :(得分:1)

这是你可以写这个的一种方式:

Create Function links(xstatus int) returns varchar(2400) language sql
begin
  return 
    case 
      when xstatus is null then 'is null' 
      else 'is not null' 
    end;
end;

<强> SQL Fiddle