首頁 > 資料庫 > mysql教程 > 如何在不使用 EXEC 或 EXECUTE 的情況下在 MySQL 中執行動態 SQL 查詢?

如何在不使用 EXEC 或 EXECUTE 的情況下在 MySQL 中執行動態 SQL 查詢?

DDD
發布: 2024-12-17 01:45:25
原創
130 人瀏覽過

How Can I Execute Dynamic SQL Queries in MySQL Without Using EXEC or EXECUTE?

在 MySQL 中執行字串

程式設計中的常見任務之一是動態產生和執行 SQL 查詢的能力。在 MySQL 中,此功能並不像 SQL Server 等其他語言那麼簡單,SQL Server 為此目的提供了 EXEC 指令。

問題:

使用者想要轉換 MSSQL 中使用 varchar 作為查詢的預存程序。但是,MySQL 不支援 EXEC 和 EXECUTE,CALL 也無法運作。

解決方案:

雖然 MySQL 沒有與 JavaScript 的 eval 函數完全相同的功能,有一種結合使用動態 SQL 和預存程序的解決方法。實作方法如下:

  1. 準備動態查詢:使用派生表連接要插入的值,從而產生包含 SQL 查詢的單一字串。
  2. 建立準備語句:使用PREPARE 將動態查詢指派給準備好的語句變數
  3. 執行準備好的語句:使用EXECUTE 語句執行準備好的語句。
  4. 釋放準備好的語句:執行查詢後,使用DEALLOCATE PREPARE 取消分配準備好的語句變量

示例:

以下程式碼片段說明了解:

SET @queryString = (
SELECT CONCAT('INSERT INTO user_group (`group_id`,`user_id`) VALUES ', www.vals) as res FROM (
    SELECT GROUP_CONCAT(qwe.asd SEPARATOR ',') as vals FROM ( 
           SELECT CONCAT('(59,', user_id, ')') as asd FROM access WHERE residency = 9 
    ) as qwe 
) as www
);

PREPARE stmt FROM @queryString;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
SET @asd = NULL;
登入後複製

以上是如何在不使用 EXEC 或 EXECUTE 的情況下在 MySQL 中執行動態 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板