預存程序函數中的動態表名
問題:
問題:儲存流程如何函數根據傳遞的參數動態存取表,避免出現「儲存函數或觸發器中不允許動態SQL」錯誤?
答案:雖然動態 SQL在儲存函數中不允許,有其他方法。一種選擇是建立具有 OUT 參數的預存程序,並使用預先準備語句動態建立 SQL 語句。
CREATE PROCEDURE getName (IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50)) BEGIN SET @GetName = CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE>
解決方案:
SET @tableName = 'tbl'; SET @myId = 1005; SET @name = NULL; CALL getName(@tableName, @myId, @name); SELECT @name;
範例用法:
此解決方法提供了一種使用準備好的語句和OUT 參數動態存取預存程序函數中的表的方法。以上是如何在預存程序函數中動態存取表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!