MySQL在存储过程中返回值

MySQL在存储过程中返回值,mysql,stored-procedures,Mysql,Stored Procedures,这是一个非常简单的存储过程,但我无法让它工作。我想根据传入的一些筛选器统计记录的数量。where子句工作得很好(它在另一个存储过程中用于返回值)。在这个存储过程中,我只需要基于“where”的总计数。我这样称呼它: 调用countthem('column1','AA','LIKE',@outfiltercount); 但是,我收到了错误消息“错误代码1327:未声明的变量:countit” 改变 到 因此,替换选择。。。通过选择进入。。。正如您的countit变量从未赋值。我不确定您所说的从未赋

这是一个非常简单的存储过程,但我无法让它工作。我想根据传入的一些筛选器统计记录的数量。where子句工作得很好(它在另一个存储过程中用于返回值)。在这个存储过程中,我只需要基于“where”的总计数。我这样称呼它: 调用countthem('column1','AA','LIKE',@outfiltercount); 但是,我收到了错误消息“错误代码1327:未声明的变量:countit”

改变


因此,替换
选择。。。通过
选择进入
。。。正如

您的countit变量从未赋值。我不确定您所说的从未赋值是什么意思?我尝试在它进入“如果”之前将其设置为0。。。。但是,它仍然不起作用。
CREATE DEFINER=`root`@`%` PROCEDURE countthem(
  IN infilterfield  varchar(25),  
  IN infiltervalue varchar(100), 
  IN infiltertype varchar(10),
  OUT outfiltercount INT)


BEGIN

DECLARE SQLStatement varchar(255);
DECLARE countit INT;


SET @filterfield = infilterfield;
SET @filtervalue = infiltervalue; 
SET @filtertype = infiltertype;

SET outfiltercount = 0;

SET @filterstring = '';

IF infiltertype is not null and infiltertype != ''

  THEN

     IF infiltertype like 'EQUALS'
        THEN
           SET @filterstring = CONCAT(' WHERE ', @filterfield, ' ', ' = ', ' \'', @filtervalue, '\'');
     ELSE
           SET @filterstring = CONCAT(' WHERE ', @filterfield, ' ', ' LIKE ', ' \'%', @filtervalue, '%\'');
     END IF;
END IF;  

SET @SQLStatement = CONCAT('select count(*) into countit from vsltable ', @filterstring);

PREPARE stmt FROM @SQLStatement;

EXECUTE stmt;   

set outfiltercount = countit;

END$$
DELIMITER ;
SET @SQLStatement = CONCAT('select count(*) into countit from vsltable ', @filterstring);
SET @SQLStatement = CONCAT('select count(*) as countit from vsltable ', @filterstring);