MYSQL : Undeclared variable

标签 mysql stored-procedures

我有两个存储过程,第一个参数带有静态,并且运行良好 但是当我使用动态参数时,它给了我一个错误未声明的变量:limitvar
1/程序

`DELIMITER $$

DROP PROCEDURE IF EXISTS `gestprospects`.`recClientsFiltre` $$
CREATE  PROCEDURE `recClientsFiltre`(IN params text, in limitvar int , in offsetvar int )

BEGIN
SET @query := concat(concat("SELECT ... WHERE CONCAT(clients.id,'-') in (",params),") limit 10,10");
  PREPARE stmt FROM @query ;
  EXECUTE stmt  ;
  DEALLOCATE PREPARE stmt;

END  $$

DELIMITER ;`

2/程序

 DELIMITER $$

DROP PROCEDURE IF EXISTS `gestprospects`.`recClientsFiltre` $$
CREATE  PROCEDURE `recClientsFiltre`(IN params text, in limitvar int , in offsetvar int )

BEGIN
SET @query := concat(concat("SELECT ... WHERE CONCAT(clients.id,'-') in (",params),") limit limitvar,offsetvar");
  PREPARE stmt FROM @query ;
  EXECUTE stmt  ;
  DEALLOCATE PREPARE stmt;

END  $$

DELIMITER ;

谢谢您的回复

最佳答案

您在动态查询中包含了文字字符串 limitvaroffsetvar,而您希望包含它们的值。

@query := CONCAT(
    "SELECT ... WHERE CONCAT(clients.id,'-') IN (", params,")",
    " LIMIT ", limitvar, ", ", offsetvar);

注意如何 concatenate several strings在一次调用 CONCAT() 中;

关于MYSQL : Undeclared variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24141814/

相关文章:

php - 如何使用左连接更新多个(5)表?

javascript - 在 ajax 成功中无法检测到来自 mysql 的 json_encode 结果

sql - 如何在SQL Server 2005中调用表值函数中的存储过程?

mysql - 调试存储过程中的mySQL语法错误

sql - CREATE OR ALTER PROCEDURE 中关键字 'OR' 附近的语法不正确

mysql 限制无法针对 1 个 id 执行多条记录

mysql COUNT DISTINCT 多列与 WHERE

php - TinyButStrong 如何使用 block 与php var比较数据值?

mysql - Laravel 查询构建器表连接

c# - 确定 SQL Server 查询(存储过程)结果类型