2009-12-10 66 views
2

我有一個存儲過程,我想傳遞一個字符串,以便在查詢中進行評估。 我將基於存在的查詢參數在php中構建一個字符串。 所以,我的字符串可能是col1 = val1col1 = val1 AND col2 = val2 AND col3 = val3等。 然後在我的存儲過程中,我會這樣做: SET @s = CONCAT('SELECT * from tablename WHERE ' , string); PREPARE stmt FROM @s; EXECUTE stmt; 我嘗試了一些不同的方式來做到這一點,沒有成功。 這可能嗎? 謝謝。評估一個MySQL存儲過程中的字符串

回答

2

您的代碼有效,但您可能有錯誤。 嘗試通過替換 PREPARE stmt FROM @s來調試它; EXECUTE stmt;

SELECT @s;

然後通過運行確認輸出是有效的,它可能是你的建築@s錯誤。

0

沒有看到你的整個過程,這似乎是應該工作的東西。請確保您指定的CREATE子句中「曰SQL DATA」爲您存儲的過程,即:

CREATE PROCEDURE `foo`(IN bar varchar(100)) 
READS SQL DATA 
BEGIN 
-- blah blah blah 
END 

我在做什麼你想在MySQL做,所以你只是缺少一些小東西的地方。