CREATE DATABASE db5;
USE db5;
mysql> CREATE DATABASE db5;
Query OK, 1 row affected (0.00 sec)
mysql> USE db5;
Database changed
mysql> CREATE DATABASE db5;
Query OK, 1 row affected (0.01 sec)
mysql> USE db5;
Database changed
mysql> CREATE TABLE t (s1 INT);
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO t VALUES (5);
Query OK, 1 row affected (0.00 sec)
DELIMITER //
mysql> DELIMITER //
"DELIMITER ;//".
CREATE PROCEDURE Example 创建程序实例
CREATE PROCEDURE p1 () SELECT * FROM t; //
CREATE PROCEDURE p1 () SELECT * FROM t; // <--
CREATE PROCEDURE p1 () SELECT * FROM t; // <--
第二部分是过程名,上面新存储过程的名字是p1。Digression: Legal Identifiers 题外话:合法标识符的问题 存储过程名对大小写不敏感,因此‘P1’和‘p1’是同一个名字,在同一个数据库中你将不能给两个存储过程取相同的名字,因为这样将会导致重载。某些DBMS允许重载(Oracle支持),但是MySQL不支持(译者话:希望以后会支持吧。)。
你可以采取“数据库名.存储过程名”这样的折中方法,如“db5.p1”。存储过程名可以分开,它可以包括空格符,其长度限制为64个字符,但注意不要使用MySQL内建函数的名字,如果这样做了,在调用时将会出现下面的情况:
mysql> CALL pi();Error 1064 (42000):
You have a syntax error.mysql> CALL pi ();
Error 1305 (42000): PROCEDURE does not exist.
在上面的第一个例子里,我调用的是一个名字叫pi的函数,但你必须在调用的函数名后加上空格,就像第二个例子那样。CREATE PROCEDURE p1 () SELECT * FROM t; // <--
其中“()”是“参数列表”。
CREATE PROCEDURE
语句的第三部分是参数列表。通常需要在括号内添加参数。例子中的存储过程没有参数,因此参数列表是空的—所以我只需要键入空括号,然而这是必须的。
CREATE PROCEDURE p1 () SELECT * FROM t; // <--"SELECT * FROM t;"
是存储过程的主体。
然后到了语句的最后一个部分了,它是存储过程的主体,是一般的SQL语句。过程体中语句
"SELECT * FROM t;"
包含一个分号,如果后面有语句结束符号(//)时可以不写这个分号。
如果你还记得我把这部分叫做程序的主体将会是件好事,因为(body)这个词是大家使用的技术上的术语。通常我们不会将SELECT语句用在存储过程中,这里只是为了演示。所以使用这样的语句,能在调用时更好的看出程序是否正常工作。未完待续...
![]() | 图解MySQL数据库的安装和操作 | 53815 |
![]() | Mysql数据库操作新手入门,手把手的教会你 | 36326 |
![]() | MySQL入门学习(二)入门篇 | 33066 |
![]() | MySQL入门学习(一)安装篇 | 28468 |
![]() | MY SQL常用命令 | 25482 |
![]() | MySQL入门学习(三)学习篇 | 20922 |
![]() | MySQL入门学习(四)学习篇(2) | 12348 |
![]() | MySQL入门学习(六)修改和备份、批处理 | 8931 |