Textual description of firstImageUrl

Insertar datos desde un procedimiento almacenado a una Tabla

Cómo hacer que un procedimiento almacenado que produce una tabla inserte su resultado en una tabla 

Esquema del procedimiento almacenado


Método 1 : Cuando se conoce el esquema que produce el procedimiento  almacenado T-SQL
Para demostrar el primer método, vamos a crear el siguiente procedimiento almacenado:

CREATE PROCEDURE GetNombresBD
AS
SELECT
name, database_id
FROM sys.databases
GO

Ejecutamos el procedimiento:

EXEC GetNombresDB

Ahora bien, si conocemos previamente el esquema del resultado del procedimiento almacenado
podemos construir en primer lugar una tabla con este mismo esquema.

CREATE TABLE #TablaPrueba ([name] NVARCHAR(256), [database_ID] INT);
INSERT INTO #TablaPrueba
EXEC GetNombresDB
-- Selecionar Tabla
SELECT *
FROM #TablaPrueba;

Este enfoque tiene la desventaja de que si el procedimiento almacenado T-SQL devuelve columnas más o columnas menos, entonces se producirá un error.

Resultado de Procedimiento Almacenado

Método 2 - Cuando se Desconoce el Esquema que produce el Procedimiento Almacenado

Para los casos en los que se desconoce el esquema que producirá el procedimiento almacenado y queremos poblar una tabla con los resultados de este, debemos primero que todo, en los parámetros de la base de datos, activar dos de ellos para ejecutar con éxito el código propuesto.

sp_configure 'Show Advanced Options', 1
GO
RECONFIGURE
GO
sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO


Una vez hecha la reconfiguración podemos ejecutar el siguiente código:

SELECT * INTO #TablaPrueba FROM OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;',
'EXEC tempdb.dbo.GetNombresDB')
-- Select Table
SELECT *
FROM #TablaPrueba;

Modificacion de Procedimiento Almacenado


La desventaja de este código es su complejidad pero funciona bastante bien en estos casos en los que desconocemos los nombres de las columnas

No hay comentarios.:

Publicar un comentario