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

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

122次阅读
没有评论

共计 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字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久午夜无码鲁丝片 | 日本真人做人试看60分钟 | 国产精品乱码在线观看 | 国产精品成熟老女人 | 亚洲精品午夜国产va久久 | 成人亚洲视频在线观看 | 亚洲天堂福利 | 亚洲综合网在线 | 不卡av电影在线 | 国产小屁孩cao大人 国产小视频免费观看 | 人妻夜夜爽天天爽欧美色院 | 日韩一道本 | 亚洲美女亚洲精品久久久久 | 一级片免费播放 | 国产在线观看精品 | 久久久久爱| 成人欧美在线 | 欧美精品久久久久久久久大尺度 | 日韩精品一区二区三区四区 | 自拍视频网站 | 小明成人永久免费观看视频 | 99爱视频99爱在线观看免费 | 精品成人一区二区三区四区 | 大桥未久 在线 | 你懂的网址在线 | 欧美激情 自拍 | 久久在线观看免费视频 | 久久综合香蕉国产蜜臀av | 毛片免费永久不卡视频观看 | www久久只有这里有精品 | 国产色在线播放 | 男人在线天堂 | 日韩高清在线播放 | 精品久久不卡 | 午夜精品久久久久久久喷水 | 99黄色| 和岳每晚弄的高潮嗷嗷叫视频 | 国产精品视频一 | 国产亚洲女在线线精品 | 精品久久久久久中文 | 久99视频|