Saltar al contenido

Crear una vista con SQL dinámico

Solución:

Puede hacer esto anidando dos veces las declaraciones SQL dinámicas y luego:

begin tran
declare @sql nvarchar(max) = 
    N'use [AdventureWorks2012]; 
      exec (''create view Test as select * from sys.databases'')';

exec (@sql);

select * from AdventureWorks2012.sys.views
where name="Test"

rollback tran

En lugar del anidamiento doble, otro enfoque es crear un procedimiento almacenado cuyo único propósito es ejecutar SQL dinámico

CREATE PROCEDURE [dbo].[util_CreateViewWithDynamicSQL] 
@sql nvarchar(max)
AS
BEGIN
    SET NOCOUNT ON;
    EXECUTE (@sql)  
END

El procedimiento almacenado anterior se puede reutilizar. Siempre que necesite crear una vista, simplemente llame al procedimiento almacenado y páselo al sql dinámico.

EXECUTE util_CreateViewWithDynamicSQL 'create view Test as select * from sys.databases'

Prefiero este enfoque porque el sql dinámico es lo suficientemente confuso y agregar doble anidación lo complica aún más.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *