在mysql中使用 call语句调用存储过程,是很经常的事,今天分享一段代码,供朋友们参考。
代码:
mysql> CREATE TABLE titles ( //创建mysql表 -> titleID int(11), -> title varchar(100), -> subtitle varchar(100), -> edition tinyint(4), -> publID int(11), -> catID int(11), -> langID int(11), -> year int(11), -> isbn varchar(20), -> comment varchar(255), -> ts timestamp, -> authors varchar(255), -> PRIMARY KEY (titleID) -> ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO titles VALUES (1,'Linux','Installation',5,1,57,2,2000,NULL,NULL,'2005-02-28 13:34:21','Michael'), -> (2,'Excel',NULL,NULL,2,3,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','David'), -> (3,'XML',NULL,NULL,1,2,NULL,1997,NULL,NULL,'2005-02-28 13:34:22','Edwards'), -> (4,'PHP',NULL,NULL,3,6,NULL,2000,NULL,NULL,'2005-02-28 13:34:22','Tom'), -> (5,'MySQL','',0,3,34,NULL,2000,'','','2005-02-28 13:34:22','Paul'), -> (6,'Java',NULL,NULL,4,34,NULL,1999,NULL,NULL,'2005-02-28 13:34:22','Tim'); Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0 mysql> CREATE TABLE publishers ( //创建mysql表 -> publID int(11) NOT NULL auto_increment, -> publName varchar(60) collate latin1_german1_ci NOT NULL default '', -> ts timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, -> PRIMARY KEY (publID), -> KEY publName (publName) -> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci; Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO publishers VALUES (1,'A','2004-12-02 18:36:58'), -> (2,'Apress','2004-12-02 18:36:58'), -> (3,'New Riders','2004-12-02 18:36:58'), -> (4,'O'Reilly & Associates','2004-12-02 18:36:58'), -> (5,'Hanser','2004-12-02 18:36:58'); Query OK, 5 rows affected (0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> delimiter $$ mysql> mysql> create PROCEDURE get_title(IN id INT) //创建存储过程 -> BEGIN -> SELECT title, subtitle, publName FROM titles, publishers WHERE titleID=id AND titles.publID = publishers.publID; -> END$$ Query OK, 0 rows affected (0.00 sec) mysql> create PROCEDURE half(IN a INT, OUT b INT) //创建存储过程 -> BEGIN -> SET b = a/2; -> END$$ mysql> delimiter ; mysql> CALL get_title(1); //调用存储过程 +-------+--------------+----------+ | title | subtitle | publName | +-------+--------------+----------+ | Linux | Installation | A | +-------+--------------+----------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec) mysql> drop table publishers; //删除表publishers Query OK, 0 rows affected (0.00 sec) mysql> drop table titles; //删除表titles Query OK, 0 rows affected (0.00 sec)