中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

MySQL5.7中PREPARE、EXECUTE、DEALLOCATE語句怎么用

小編給大家分享一下MySQL 5.7中PREPARE、EXECUTE、DEALLOCATE語句怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶的角度思考問題,與客戶深入溝通,找到蒲縣網站設計與蒲縣網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:做網站、網站設計、企業官網、英文網站、手機端網站、網站推廣、域名注冊虛擬主機、企業郵箱。業務覆蓋蒲縣地區。

PREPARE語句準備好一條SQL語句,并分配給這條SQL語句一個名字供之后調用。準備好的SQL語句通過EXECUTE命令執行,通過DEALLOCATE PREPARE命令釋放掉。

語句的名字不區分大小寫。準備好的SQL語句名字可以是字符串,也可以是用戶指定的包含SQL文本的變量。PREPARE中的SQL文本必須代表一條單獨的SQL語句而不能是多條SQL語句。在SQL語句中,? 字符用來作為后面執行查詢使用的一個參數。? 不能加上引號,及時打算將它們綁定到字符變量中也不可以。

如果準備好的SQL語句名字已經存在,它會在新語句被準備好前釋放掉。這意味著,如果一條新的語句包含錯誤且不能被準備好,這時會返回錯誤并且準備好的SQL語句將不再存在。

準備好的語句范圍是創建它的會話,具有下列特點:

準備好的語句在其他會話無效;

當會話結束時,不管會話時正常結束還是異常結束,這個會話中準備好的SQL語句將不再存在。如果自動連接功能開啟,客戶端不會被通知連接丟失。

在存儲過程或函數里面的準備好的語句,在存儲過程或函數執行結束后,會繼續存在,可以在存儲過程或包外面繼續被執行。

示例:
mysql> SET @a=10;
Query OK, 0 rows affected (0.00 sec)

mysql> PREPARE STMT FROM 'SELECT * FROM dept2 LIMIT ?';
Query OK, 0 rows affected (0.08 sec)
Statement prepared

mysql> EXECUTE STMT USING @a;
+--------+-------+
| deptno | dname |
+--------+-------+
|     10 | A     |
|     20 | B     |
|     30 | C     |
|     40 | D     |
|     50 | E     |
|     60 | F     |
|     70 | G     |
|     80 | H     |
|     90 | I     |
|    100 | J     |
+--------+-------+
10 rows in set (0.02 sec)

mysql> SET @skip=1; SET @numrows=5;
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> PREPARE STMT FROM 'SELECT * FROM dept2 LIMIT ?, ?';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> EXECUTE STMT USING @skip, @numrows;
+--------+-------+
| deptno | dname |
+--------+-------+
|     20 | B     |
|     30 | C     |
|     40 | D     |
|     50 | E     |
|     60 | F     |
+--------+-------+
5 rows in set (0.00 sec)

mysql> DEALLOCATE PREPARE STMT;
Query OK, 0 rows affected (0.00 sec)

mysql> EXECUTE STMT USING @skip, @numrows;
ERROR 1243 (HY000): Unknown prepared statement handler (STMT) given to EXECUTE

mysql> PREPARE STMT FROM 'SELECT * FROM dept2 LIMIT ?, ?';
Query OK, 0 rows affected (0.00 sec)
Statement prepared

mysql> EXECUTE STMT USING @skip, @numrows;
+--------+-------+
| deptno | dname |
+--------+-------+
|     20 | B     |
|     30 | C     |
|     40 | D     |
|     50 | E     |
|     60 | F     |
+--------+-------+
5 rows in set (0.00 sec)

示例存儲過程
delimiter $$
create procedure registerSQLReference(IN the_table_name VARCHAR(80), IN the_sql_script_version VARCHAR(80), IN the_sql_script_name VARCHAR(80),
IN the_install_version  VARCHAR(80), IN the_execution_duration VARCHAR(80), IN the_sql_script_description VARCHAR(200))
BEGIN
declare column_exist INT DEFAULT 0;
declare the_query VARCHAR(500);

  select '[INFO]    Check if the column C_CHANGE_DESCRIPTION exists in the table @VERSION_LEVEL_TABLE_NAME';
  set column_exist = is_ChangeDescColumnExist ('@VERSION_LEVEL_TABLE_NAME');

  IF column_exist = 0
  THEN

    select '[INFO]    VERSION LEVEL TABLE does not contain C_CHANGE_DESCRIPTION column.';
    set @v_the_table_name=the_table_name;
    select concat('INSERT INTO ', @v_the_table_name, ' VALUES (?, ?, ?, ?, ?) ') into the_query;
    SET @stmt=the_query;
    PREPARE STMT FROM @stmt;
    select concat('[INFO]    the_query=', the_query );
    set @v_the_sql_script_version=the_sql_script_version;
    set @v_the_sql_script_name=the_sql_script_name;
    set @v_date=now();
    set @v_the_install_version=the_install_version;
    set @v_the_execution_duration=the_execution_duration;
    EXECUTE STMT using @v_the_sql_script_version , @v_the_sql_script_name, @v_date, @v_the_install_version, @v_the_execution_duration;

  ELSE
    select '[INFO]    VERSION LEVEL TABLE contains C_CHANGE_DESCRIPTION column.';

    select concat('INSERT INTO ', the_table_name, ' VALUES (?, ?, ?, ?, ?, ?) ') into the_query;
    SET @stmt=the_query;
    PREPARE STMT FROM @stmt;
    select concat('[INFO]    the_query=', the_query );
    set @v_the_sql_script_version=the_sql_script_version;
    set @v_the_sql_script_name=the_sql_script_name;
    set @v_date=now();
    set @v_the_install_version=the_install_version;
    set @v_the_execution_duration=the_execution_duration;
    set @v_the_sql_script_description=the_sql_script_description;
    select concat('[INFO]    the_query=', the_query);
    EXECUTE the_query using @v_the_sql_script_version , @v_the_sql_script_name, @v_date, @v_the_install_version, @v_the_execution_duration, @v_the_sql_script_description;

  END IF;
  DEALLOCATE PREPARE STMT;
END$$
delimiter ;

以上是“MySQL 5.7中PREPARE、EXECUTE、DEALLOCATE語句怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!

當前標題:MySQL5.7中PREPARE、EXECUTE、DEALLOCATE語句怎么用
分享鏈接:http://www.2m8n56k.cn/article46/jdsheg.html

成都網站建設公司_創新互聯,為您提供App設計建站公司品牌網站制作品牌網站建設Google

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站網頁設計
主站蜘蛛池模板: 久久国产精品女 | 欧美日韩在线视频不卡一区二区三区 | 国产成人免费午夜在线观看 | 国产精品久久久久久麻豆一区 | 黄网在线免费 | 欧美成人免费一级人片 | 国产午夜精品免费一二区 | 国产成人ay手机在线观看 | 日本高清免费视频www | 九九99久麻豆精品视传媒 | 在线精品自拍 | 在线观看亚洲国产 | 美女视频黄色的免费 | 免费看欧美成人性色生活片 | 久久不见久久见免费影院www日本 | 精品厕拍 | 国产成人a一在线观看 | 7m视频精品凹凸在线播放 | 韩国美女激情视频一区二区 | 日韩一级欧美一级毛片在线 | 国产a级一级久久毛片 | 精品400部自拍视频在线播放 | 久久亚洲成a人片 | 亚洲成人在线免费视频 | 日本黄大片影院一区二区 | 日本三级视频在线 | 男女免费爽爽爽在线视频 | 国产伦理自拍 | 欧美成人免费高清网站 | 思99re久久这里只有精品首页 | 国产区精品 | 成人做爰免费网站 | 亚洲国产欧美在线成人aaaa | 色夜视频 | 男女视频在线观看免费高清观看 | 久久九九热视频 | 欧美一级毛片免费播放aa | 久在线播放 | 亚洲天堂男人在线 | 国产在线观看成人免费视频 | 国产大片线上免费观看 |