News

Information Technology [1]

Information Technology: MySQL 的SQL準備語法

Contributed by TyroneYeh on Nov 17, 2009 - 09:05 上午

就是 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

 
Links
  1. http://siryeh.com/index.php?module=News&func=view&prop=Main&cat=33