看个具体的例子:
在TEST数据库中创建一个存储过程,名为getRecord:
DELIMITER $$DROP PROCEDURE IF EXISTS `TEST`.`getRecord` $$CREATE PROCEDURE `TEST`.`getRecord` (IN in_id INTEGER,OUT out_name VARCHAR(20),OUT out_age INTEGER)BEGIN SELECT name, age INTO out_name, out_age FROM Student where id = in_id;END $$DELIMITER ;
这个存储过程接受学生ID为输入,输出为学生的名字和年龄,实现一个简单的查询功能。
![d522cda5a74b33444b1e2b8cf5248615.png](https://i-blog.csdnimg.cn/blog_migrate/23e181493bf3d2858d960324d39e2027.jpeg)
存储过程创建完毕后,用如下的命令行查询其状态:
> show procedure status like 'g%'
![c3edecd20307dd58d8e32dc1ef169688.png](https://i-blog.csdnimg.cn/blog_migrate/7570d4f150fdcadff99e98f0759d9c37.jpeg)
另外一条查询命令:
> show create procedure test.getRecord
![8f447de87439414bc6ddf08d64adda7e.png](https://i-blog.csdnimg.cn/blog_migrate/a13037e36351e3281a646ecc0b222429.jpeg)
MySQL里的information_schema.Routines这张表类似SAP ABAP里的TADIR(对象注册表),所以我们也可以查询该表里对应的存储过程的记录:
select * from information_schema.Routines where routine_name = 'getRecord' and routine_type = 'procedure' G;
![d7cb937faca2bf6f8156d7ac2056fdd6.png](https://i-blog.csdnimg.cn/blog_migrate/7cad5d6fdc8e72792a5acf6e94c2d060.jpeg)
![77b429be4a3106741be705671354a953.png](https://i-blog.csdnimg.cn/blog_migrate/ccd13b8130dcc4bf8d3eea1cb1e78dd6.jpeg)