儲存過程函數中的動態表名稱
問題陳述:
問題陳述:問題陳述:
是建立目標一個從表中檢索值的預存程序函數,其中表名稱作為參數動態提供。但是,嘗試在函數內動態產生 SQL 語句會導致「不允許動態 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>
解決方案:
雖然在預存程序函數中不允許動態 SQL,但它是可以利用準備好的語句來動態建構和執行 SQL 語句。不幸的是,準備好的語句不能直接在函數中使用。SET @tableName = 'tbl'; SET @myId = 1005; SET @name = NULL; CALL getName(@tableName, @myId, @name); SELECT @name;
另一種方法是建立一個帶有OUT 參數的預存程序:
此程序接受輸入參數tableName 和myId,並且將myName OUT 參數設定為檢索到的值。這個過程動態建構 SQL 語句並使用準備好的語句來執行。 要使用此流程,請按照下列步驟操作:此解決方案允許動態擷取來自不同位置的值。預存程序中的表。以上是如何從預存程序中動態指定的表中檢索資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!