日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql eval,mysql中是否有类似于eval的写法的,答案在这里

發布時間:2025/3/12 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql eval,mysql中是否有类似于eval的写法的,答案在这里 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在我們寫sql的時候,經常可能會遇到同一個問題:mysql是否具備eval的功能從而使我的變量動態加載到對應的sql語句中:

eval('echo "abc";');

?>

var s=eval("{'a':'123456'}");

//---您的mysql也想玩eval?

答案是肯定的,沒有,但是不要灰心 有個一個很好用的方法來替代:

PREPARE statement_name FROM sql_text /*定義*/

EXECUTE statement_name [USING variable [,variable...]] /*執行預處理語句*/

DEALLOCATE PREPARE statement_name /*刪除定義*/

例子:

mysql> PREPARE prod FROM "INSERT INTO examlple VALUES(?,?)";

mysql> SET @p='1';

mysql> SET @q='2';

mysql> EXECUTE prod USING @p,@q;

mysql> SET @name='3';

mysql> EXECUTE prod USING @p,@name;

mysql> DEALLOCATE PREPARE prod;

使用 PREPARE 的幾個注意點:

A:PREPARE stmt_name FROM preparable_stmt;預定義一個語句,并將它賦給 stmt_name ,tmt_name 是不區分大小寫的。

B: 即使 preparable_stmt 語句中的 ? 所代表的是一個字符串,你也不需要將 ? 用引號包含起來。

C: 如果新的 PREPARE 語句使用了一個已存在的 stmt_name ,那么原有的將被立即釋放! 即使這個新的 PREPARE 語句因為錯誤而不能被正確執行。

D: PREPARE stmt_name 的作用域是當前客戶端連接會話可見。

E: 要釋放一個預定義語句的資源,可以使用 DEALLOCATE PREPARE 句法。

F: EXECUTE stmt_name 句法中,如果 stmt_name 不存在,將會引發一個錯誤。

G: 如果在終止客戶端連接會話時,沒有顯式地調用 DEALLOCATE PREPARE 句法釋放資源,服務器端會自己動釋放它。

H: 在預定義語句中,CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE, 和大部分的 SHOW 句法被支持。

I: PREPARE 語句不可以用于存儲過程,自定義函數!但從 MySQL 5.0.13 開始,它可以被用于存儲過程,仍不支持在函數中使用!

當然一個悲劇的壞消息最后告訴你:

這個東西好用但是不要妄想給他封裝到哪個函數里面

這個雖然能解決問題不要想用到觸發器里面,甚至造到存儲過程中用觸發器引用也是不被允許的

看完上面兩點請冷靜一下洗洗睡吧

建議: 你可以 把他封裝到存儲過程中用動態語言調用 這個是可以玩得轉的哦!

最后編輯:2017-09-07作者:Tony

這個人很懶什么也沒留!~

總結

以上是生活随笔為你收集整理的mysql eval,mysql中是否有类似于eval的写法的,答案在这里的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。