在开始编写和使用MySQL存储过程之前,我们必须具有以下先决条件-
我们知道MySQL 5引入了存储过程,因此首先我们需要在开始编写和使用存储过程之前检查MySQL的版本。可以通过以下查询完成-
mysql> Select VERSION(); +-----------+ | VERSION() | +-----------+ | 5.7.20 | +-----------+ 1 row in set (0.10 sec)
实际上,CREATE PROCEDURE和CREATE FUNCTION需要CREATE ROUTINE特权。默认情况下,MySQL自动向例程创建者授予ALTER ROUTINE和EXECUTE特权。可以通过禁用automatic_sp_privileges系统变量来更改此行为。可以使用以下查询检查当前用户的特权-
mysql> SHOW PRIVILEGES
在创建过程之前,我们必须必须从可用数据库中选择一个数据库。可以在以下查询的帮助下完成-
mysql> USE query; Database changed
从上面的查询中可以明显看出,我们正在使用一个名为“ query”的数据库。
分隔符是用于完成SQL语句的字符或字符串。默认情况下,我们使用分号(;)作为分隔符。但这会在存储过程中引起问题,因为一个过程可以有很多语句,并且每个人都必须以分号结尾。因此,对于您的定界符,请选择在语句或过程中很少出现的字符串。我们可以选择双反斜杠//或双美元符号$$或我们选择的其他任何定界符。可以在以下查询的帮助下完成-
mysql> DELIMITER // ;
现在,默认定界符已更改为//符号,可以从以下查询中检查它-
mysql> Select * from student_info // +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 100 | Aarav | Delhi | Computers | | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | +------+---------+------------+------------+ 4 rows in set (0.00 sec)