无锡营销网站建设,腾讯云服务器1元,网络建设费是什么费用,企业的网站开发费用如何入账我们写 SQL 的时候#xff0c;MySQL 怎么判断 SQL 是否已经结束了#xff0c;可以去执行了#xff1f;
需要一个结束符#xff0c;当 MySQL 看到这个结束符的时候#xff0c;表示可以执行前面的语句了#xff0c;MySQL 默认以分号为结束符。
当我们创建存储过程或者自定…我们写 SQL 的时候MySQL 怎么判断 SQL 是否已经结束了可以去执行了
需要一个结束符当 MySQL 看到这个结束符的时候表示可以执行前面的语句了MySQL 默认以分号为结束符。
当我们创建存储过程或者自定义函数的时候写了很大一片 SQL里面包含了很多分号但是整个代码语句是一个整体不能让 MySQL 读到分号就立即去执行这样肯定是不行的。我们需要完整的代码语句一起执行才行。所以此时我们就不可以用分号作为结束符了必须另外声明结束符。
delimiter 关键字就是用来自定义结束符的请参考下面的示例
mysql /*创建表test1*/
mysql drop table IF EXISTS test1;
Query OK, 0 rows affected (0.01 sec)mysql create table test1(a int PRIMARY KEY,b int);
Query OK, 0 rows affected (0.01 sec)mysql
mysql /*声明脚本的结束符为$$*/
mysql DELIMITER $$
mysql DROP PROCEDURE IF EXISTS proc1;- CREATE PROCEDURE proc1()- BEGIN- /*声明了一个局部变量*/- DECLARE v_a int;-- select ifnull(max(a),0)1 into v_a from test1;- select v_b:v_a*2;- insert into test1(a,b) select v_a,v_b;- end $$
Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql
mysql /*声明脚本的结束符为;*/
mysql DELIMITER ;
mysql
mysql /*调用存储过程*/
mysql call proc1();
-------------
| v_b:v_a*2 |
-------------
| 2 |
-------------
1 row in set (0.00 sec)Query OK, 1 row affected (0.01 sec)mysql /*查看结果*/
mysql select * from test1;
---------
| a | b |
---------
| 1 | 2 |
---------
1 row in set (0.00 sec)