我创建了一个带2个参数的程序并检查计数。
但是当我传递""
空白值时,它仍会返回1个计数。
没有得到它为什么这样工作。
感谢下面的帮助是我的程序
DELIMITER $$
CREATE DEFINER=`dadclient`@`123.63.249.169` PROCEDURE `checkInOut`(IN grid varchar(50),OUT count INT)
begin
select count(GRIDID) into count from GRIDID where GRIDID=grid;
select count;
END
当我打电话
checkInOut("",@aaa);
select @aaa;
当我打电话给它时,它会返回1,这是错误的。
答案 0 :(得分:2)
但是当我通过""空白值仍然返回1个计数。
因为当你通过提供一个空字符串表示它是空白时,它是一个值。空字符串也被视为数据库中的值,因此您将计为1
<强> COUNT(表达式)强>
返回行中expr的非NULL值的数量 由SELECT语句检索。结果是BIGINT值。
因此,如果您希望count
返回 0 ,则不要将字符串设为空""
,而是需要将值设为NULL
。< / p>
答案 1 :(得分:0)
哟伙伴,试试这个:
DELIMITER $$
CREATE
DEFINER=`dadclient`@`123.63.249.169`
PROCEDURE `checkInOut`(
IN `grid` VARCHAR(50),
OUT `count` INT
)
BEGIN
-- insert value into variable
SET `count` = (
select count(GRIDID)
from GRIDID
where GRIDID=grid;
);
END$$
DELIMITER ;
所以在您的申请中,例如php你可以CALL checkInOut($input, $output);
。因为您已在程序SELECT...
count
声明为OUT
,因此您无需在初始代码中使用最终parameter
部分。
注意:强>
GRIDID
是您桌子的名称吗?因为正如我所见,您还在WHERE
语句中将其用作key
过滤器contain one row
的结果。请检查那也是交配