在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MySQL 5.7中PREPARE、EXECUTE、DEALLOCATE语句怎么用

105次阅读
没有评论

共计 3708 个字符,预计需要花费 10 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 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 语句怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-27发表,共计3708字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 黄色成人免费观看 | 亚洲 国产 图片 | 一区精品在线 | 九九热在线免费 | 色妞ww精品视频7777 | 欧美成人午夜毛片免费影院 | 天天躁日日躁狠狠躁人妻 | 天天综合网天天综合色 | 亚洲av午夜成人片 | 国产精品午夜久久久久久99热 | 欧美性a欧美在线 | 少妇精品导航 | 国产av激情无码久久 | av在线亚洲av 是全亚洲 | 狠狠操综合网 | 久久久精品人妻一区二区三区四 | 亚洲一卡2卡三卡4卡无卡下载 | 40岁成熟女人牲交片20分钟 | 久久久久综合国产 | 在厨房拨开内裤进入毛片 | 亚洲国产精品久久久久 | 免费观看美女视频的网站 | 女邻居丰满的奶水 | 欧美毛片在线观看 | 国产乱码精品一区二区三区四川人 | 欧美日韩中文亚洲v在线综合 | 末发育娇小性色xxxxx | 94久久国产乱子伦精品免费 | 国产成人亚洲精品青草天美 | 青青色视频 | 亚洲视屏| 久久久91精品国产一区二区三区 | 亚洲性人人天天夜夜摸 | 国产成人精品免费视频大全软件 | 国产自在自线午夜精品 | 成在线人永久免费视频播放 | 男女做羞羞 | 亚洲人成色777777精品音频 | 丰满多毛少妇做爰视频 | 4hu影院最新地址www | 久久久99精品久久久久久 |