本文主要介绍存储过程的相关知识。
存储过程(Stored Procedure)是:大型数据库系统中,一组为了完成特定功能的 SQL 语句集,这些SQL语句集存储在数据库中,经过第一次编译后,后续调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
存储过程是数据库的一个重要对象。
使用存储过程的原因,通常也可以用存储过程的优点来讲述。如下:
当前,几大数据库厂商提供的编写存储过程的工具都没有统一,虽然它们针对存储过程的编写风格有些相似,但由于没有标准,所以各家的开发调试过程也不一样。
本文在下一节中会针对不同的数据库,分别介绍其存储过程的使用方法。
DELIMITER //
CREATE PROCEDURE GetOccupation(OUT s TEXT)
BEGIN
SELECT occupation into s FROM roles WHERE role_id = 1;
END //
DELIMITER ;
其中:
将存储过程录入数据库中有多种方式,在此我们通过MySQL客户端命令行工具,录入前面的存储过程示例。如下:
说明:我们也可以通过将存储过程内容编写为一个文件,直接将该文件内容导入数据库中;或者通过GUI工具创建存储过程。
通过MySQL客户端命令行工具,查询存储过程信息,命令如下:
SHOW PROCEDURE STATUS;
在创建了存储过程后,查询结果如下:
另外,可以通过如下命令查询存储过程的详细内容,如下:
SHOW CREATE PROCEDURE PROCEDURE_NAME
对于前面创建的存储过程,查询结果如下:
说明:“\G”的作用是将查询的结果旋转90度变成纵向显示。
通过MySQL客户端命令行工具,调用指定的存储过程,命令样式如下:
CALL PROCEDURE_NAME[(参数信息)];
其中,PROCEDURE_NAME为存储过程名称,并根据存储过程的参数设置情况,附带相应的参数信息。
此处调用前面创建的存储过程GetOccupation,如下:
上述结果显示,我们设置的参数“out_info”作为存储过程GetOccupation的出参,在调用该存储过程后,获得了相应的查询结果。
通过MySQL客户端命令行工具,删除指定的存储过程,命令样式如下:
DROP PROCEDURE PROCEDURE_NAME;
在本例中,如下:
上述结果显示:使用DROP命令删除存储过程GetOccupation之后,再次查询存储过程信息时,已经查询不到该存储过程信息了,说明删除存储过程成功了。