valor stored sistema sintaxis retornar procedimientos procedimiento parametros para mostrar fecha ejemplo ejecutar datos con almacenados almacenado sql-server tsql

sql-server - sistema - retornar valor stored procedure sql server



Consulta para enumerar todos los procedimientos almacenados. (21)

A mi entender, el método "preferido" es usar las tablas de esquema de información:

select * from information_schema.routines where routine_type = ''PROCEDURE''

¿Qué consulta puede devolver los nombres de todos los procedimientos almacenados en una base de datos de SQL Server?

Si la consulta pudiera excluir los procedimientos almacenados del sistema, sería aún más útil.


Desafortunadamente, INFORMATION_SCHEMA no contiene información sobre los procesos del sistema.

SELECT * FROM sys.objects WHERE objectproperty(object_id, N''IsMSShipped'') = 0 AND objectproperty(object_id, N''IsProcedure'') = 1


Escribí este simple tsql para listar el texto de todos los procedimientos almacenados. Asegúrese de sustituir el nombre de su base de datos en el campo.

use << database name >> go declare @aQuery nvarchar(1024); declare @spName nvarchar(64); declare allSP cursor for select p.name from sys.procedures p where p.type_desc = ''SQL_STORED_PROCEDURE'' order by p.name; open allSP; fetch next from allSP into @spName; while (@@FETCH_STATUS = 0) begin set @aQuery = ''sp_helptext [Extract.'' + @spName + '']''; exec sp_executesql @aQuery; fetch next from allSP; end; close allSP; deallocate allSP;


Esto devolverá todo el nombre sp

Select * FROM sys.procedures where [type] = ''P'' AND is_ms_shipped = 0 AND [name] not like ''sp[_]%diagram%''


Esto le dará sólo los nombres de los procedimientos almacenados.

select specific_name from information_schema.routines where routine_type = ''PROCEDURE'';


Esto también puede ayudar a enumerar el procedimiento, excepto los procedimientos del sistema:

select * from sys.all_objects where type=''p'' and is_ms_shipped=0


Esto, lista todas las cosas que quieras.

En Sql Server 2005, 2008, 2012:

Use [YourDataBase] EXEC sp_tables @table_type = "''PROCEDURE''" EXEC sp_tables @table_type = "''TABLE''" EXEC sp_tables @table_type = "''VIEW''"

O

SELECT * FROM information_schema.tables SELECT * FROM information_schema.VIEWS


He ajustado la excelente publicación de LostCajun para excluir los procedimientos almacenados del sistema. También quité "Extraer". del código porque no pude averiguar para qué es y me dio errores. La declaración "buscar el siguiente" dentro del bucle también necesitaba una cláusula "into".

use <<databasename>> go declare @aQuery nvarchar(1024); declare @spName nvarchar(64); declare allSP cursor for select p.name from sys.procedures p where p.type_desc = ''SQL_STORED_PROCEDURE'' and LEFT(p.name,3) NOT IN (''sp_'',''xp_'',''ms_'') order by p.name; open allSP; fetch next from allSP into @spName; while (@@FETCH_STATUS = 0) begin set @aQuery = ''sp_helptext ['' + @spName + '']''; exec sp_executesql @aQuery; fetch next from allSP into @spName; end; close allSP; deallocate allSP;


Lo siguiente devolverá todos los procedimientos en la base de datos seleccionada

SELECT * FROM sys.procedures


Para listar los procedimientos almacenados para una base de datos MySQL particular:

SHOW PROCEDURE STATUS WHERE db = ''databaseName'';



Puede probar esta consulta para obtener procedimientos y funciones almacenados:

SELECT name, type FROM dbo.sysobjects WHERE type IN ( ''P'', -- stored procedures ''FN'', -- scalar functions ''IF'', -- inline table-valued functions ''TF'' -- table-valued functions ) ORDER BY type, name


Puede usar una de las siguientes consultas para encontrar la lista de procedimientos almacenados en una base de datos:

Consulta 1:

SELECT * FROM sys.procedures;

Consulta2:

SELECT * FROM information_schema.routines WHERE ROUTINE_TYPE = ''PROCEDURE''

Si desea buscar la lista de todos los SP en todas las bases de datos , puede utilizar la siguiente consulta:

CREATE TABLE #ListOfSPs ( DBName varchar(100), [OBJECT_ID] INT, SPName varchar(100) ) EXEC sp_msforeachdb ''USE [?]; INSERT INTO #ListOfSPs Select ''''?'''', Object_Id, Name FROM sys.procedures'' SELECT * FROM #ListOfSPs


Sólo los nombres:

SELECT SPECIFIC_NAME FROM YOUR_DB_NAME.information_schema.routines WHERE routine_type = ''PROCEDURE''


Seleccionar todos los procedimientos y vistas almacenados

select name,type,type_desc from sys.objects where type in (''V'',''P'') order by name,type


Si está utilizando SQL Server 2005, lo siguiente funcionará:

select * from sys.procedures where is_ms_shipped = 0


la mejor manera de obtener objetos es usar sys.sql_modules. puede encontrar todo lo que desee de esta tabla y unirse a esta tabla con otra tabla para obtener más información por object_id

SELECT o. object_id,o.name AS name,o.type_desc,m.definition,schemas.name scheamaName FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id=o.OBJECT_ID INNER JOIN sys.schemas ON schemas.schema_id = o.schema_id WHERE [TYPE]=''p''


Como dijo Mike, la mejor manera es usar el information_schema . Mientras no esté en la base de datos maestra, no se devolverán los procedimientos almacenados del sistema.

select * from DatabaseName.information_schema.routines where routine_type = ''PROCEDURE''

Si por alguna razón usted tenía procedimientos almacenados que no eran del sistema en la base de datos maestra, podría usar la consulta (esto filtrará la mayoría de los procedimientos almacenados del sistema):

select * from master.information_schema.routines where routine_type = ''PROCEDURE'' and Left(Routine_Name, 3) NOT IN (''sp_'', ''xp_'', ''ms_'')


SELECT name, type FROM dbo.sysobjects WHERE (type = ''P'')


select * from dbo.sysobjects where xtype = ''P'' and status > 0


select * from DatabaseName.INFORMATION_SCHEMA.ROUTINES where routine_type = ''PROCEDURE'' select * from DatabaseName.INFORMATION_SCHEMA.ROUTINES where routine_type =''procedure'' and left(ROUTINE_NAME,3) not in(''sp_'', ''xp_'', ''ms_'') SELECT name, type FROM dbo.sysobjects WHERE (type = ''P'')