就是 SQL 語法可以先下在一個變數上,準備好之後在執行
在文字與變數的合併還是用 concat 這個指令,把 SQL 語法串好之後就可以執行啦,這部份是直接在 MySQL 完成,不用在程式中串好,您應該在想說為什麼?因為把 SQL 語法寫在 Stored Procedure 中啊,有些欄位是不一定的,用變數替換掉欄位才需要這樣做,如果只是單純的條件就不用啦。
mysql> SET @table = 't1';
mysql> SET @s = CONCAT('SELECT * FROM ', @table);
mysql> PREPARE stmt3 FROM @s;
mysql> EXECUTE stmt3;
+----+
| a |
+----+
| 4 |
| 8 |
| 11 |
| 32 |
| 80 |
+----+
mysql> DEALLOCATE PREPARE stmt3;
參數值可以用 ? 問號表示
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;
參考資料 http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-prepared-statements.html