如何查询SQL存储过程的代码?求有效实现方案
查询SQL存储过程代码的常用语句
下面针对主流数据库给出直接可用的查询语句,都是当前通用版本的写法:
SQL Server
- 查询当前数据库所有存储过程的名称和完整代码:
SELECT name AS 存储过程名称, OBJECT_DEFINITION(object_id) AS 存储过程代码 FROM sys.procedures ORDER BY name;
- 查询单个指定存储过程的代码(把
YourProcedureName换成目标存储过程名):
SELECT OBJECT_DEFINITION(OBJECT_ID('YourProcedureName')) AS 存储过程代码;
MySQL
- 查询指定数据库下所有存储过程的代码(替换
YourDatabaseName为你的数据库名):
SELECT ROUTINE_NAME AS 存储过程名称, ROUTINE_DEFINITION AS 存储过程代码 FROM information_schema.routines WHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_SCHEMA = 'YourDatabaseName';
- 查询单个存储过程的完整定义:
SHOW CREATE PROCEDURE YourProcedureName;
Oracle
- 查询当前用户下所有存储过程的代码:
SELECT NAME AS 存储过程名称, TEXT AS 存储过程代码 FROM user_source WHERE TYPE = 'PROCEDURE' ORDER BY NAME, LINE;
- 查询单个存储过程的完整代码(注意Oracle对象名默认大写,替换
YOURPROCEDURENAME):
SELECT TEXT FROM user_source WHERE NAME = 'YOURPROCEDURENAME' AND TYPE = 'PROCEDURE' ORDER BY LINE;
额外提示
- 执行前确保你拥有对应的查询权限(比如SQL Server的
VIEW DEFINITION权限、MySQL的SELECT权限) - 如果存储过程被加密,这些语句无法获取明文代码
内容的提问来源于stack exchange,提问作者rich lukas
相关产品推荐
相关产品推荐

