Con el siguiente script se puede realizar la tare de manera rápida.
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[MyStoredProc]') AND type in (N'P', N'PC')) DROP PROCEDURE [MyStoredProc]
Un blog para el programador que llevamos dentro~
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[MyStoredProc]') AND type in (N'P', N'PC')) DROP PROCEDURE [MyStoredProc]
IF OBJECT_ID ('tempdb..#frutas') IS NOT NULL DROP TABLE #frutas
CREATE TABLE #frutas(id int identity(1,1), nombre varchar(100), precio numeric(23,3), cantidad int)
IF OBJECT_ID ('tempdb..#verduras') IS NOT NULL DROP TABLE #verduras
CREATE TABLE #verduras(id int identity(1,1), nombre varchar(100), precio numeric(23,3), cantidad int)
insert #frutas (nombre, precio,cantidad)
select 'manzana', 30, 100 union all
select 'pera', 28, 110 union all
select 'piña', 13, 30 union all
select 'sandia', 10, 10
insert #verduras (nombre, precio,cantidad)
select 'tomate', 8, 100 union all
select 'cebolla', 12, 300 union all
select 'brocoli', 23, 55 union all
select 'chile', 10, 10
declare @tabla varchar(30) = 'frutas'Al unir la variable de @tabla a nuestra consulta quedara como resultado Select nombre,precio,cantidad from #frutas.. y listo basta con usar la instrucción exec sp_executesql @query y nos dará todas las frutas dentro de la tabla y asi podemos hacer mas combinaciones por ejemplo elegir los campos.
declare @query nvarchar(max) = 'select nombre, precio, cantidad from #'+@tabla+''
declare @campos varchar(30) = 'nombre,precio'declare @tabla varchar(30) = 'verduras'
declare @restri varchar(30) = 'precio >=8'declare @query nvarchar(max) = 'select '+@campos+' from #'+@tabla+' where '+@restri+''