存储过程始终返回false

时间:2016-01-21 23:43:04

标签: mysql vb.net stored-procedures

如果表中不存在参数中传递的值,则此存储过程应返回false。

    CREATE DEFINER=`listsjag_user`@`%` PROCEDURE `Select_ReferenceAvailability`(IN ref VARCHAR(45))
BEGIN

IF EXISTS (
SELECT * FROM tbl_dataLibrary
WHERE itemreference = @ref
) THEN
SELECT 'true';
ELSE
SELECT 'false';
END IF;

      END

它对所有值都返回true,但列itemreference中只有一个值。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

MySQL存储过程实际上不能返回值。您可以传入OUT参数并对其进行修改,也可以将过程转换为函数。

CREATE FUNCTION ReferenceAvailability (IN ref VARCHAR(45)) 
RETURNS boolean 
BEGIN 
 IF(EXISTS(SELECT * FROM tbl_dataLibrary WHERE itemreference = @ref)) THEN 
   RETURN 1; 
 END IF; 

RETURN 0; 
END;

我将你的真/假改为1/0,随意改回来,但你需要返回varchar(5)。

在选择中使用此功能:

SELECT ReferenceAvailability(...)

希望有所帮助。