-1
我有兩個存儲過程與靜態的第一個參數,它工作得很好 但是當我而是動態的參數,它給了我一個錯誤未聲明的變量:limitvar
1 /程序MYSQL:未聲明的變量
`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 ;
謝謝您的回覆
我看不到你的兩個聲明之間的一個區別。請指出區別在哪裏,因爲玩Spot the Difference是很乏味的。另外,請說明「靜態」或「動態」(參數)的含義。如果這與您調用該程序的方式有關,那麼包括該呼叫是一個好主意。 – RandomSeed
好的,我明白了。看看我如何剝離你的代碼,只顯示重要的部分。請嘗試將來提供[MCVE示例](http://stackoverflow.com/help/mcve)。 – RandomSeed