1

我有一个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
4

1 回答 1

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

于 2013-10-13T15:18:43.757 回答