MySQL
--先通过proc获取到存储过程的名称
select * from mysql.proc where db = ? and `type` = 'PROCEDURE'
--再通过存储过程名称获取具体的定义SQL
SHOW CREATE PROCEDURE procedure_name
SQL Server
--name 存储过程名称,definition 存储过程定义
SELECT p.name, m.definition
FROM sys.sql_modules m,
sys.procedures p
where m.object_id = p.object_id
Oracle
oracle是把存储过程每1行存储为1记录,由line(行号)从小到大拼起来就是存储过程的定义。
--PROCEDURE_NAME存储过程名称,PROCEDURE_BODY 存储过程定义
SELECT name PROCEDURE_NAME,
listagg(t.TEXT, '') within group(order by line) PROCEDURE_BODY
FROM user_source t
where type = 'PROCEDURE'
group by name