Som Mike sa är det bästa sättet att använda information_schema
. Så länge du inte är i huvuddatabasen kommer systemlagrade procedurer inte att returneras.
SELECT *
FROM DatabaseName.INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
Om du av någon anledning hade icke-systemlagrade procedurer i huvuddatabasen, kan du använda frågan (detta kommer att filtrera bort de MEST systemlagrade procedurerna):
SELECT *
FROM [master].INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
AND LEFT(ROUTINE_NAME, 3) NOT IN ('sp_', 'xp_', 'ms_')