Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Pasar Un Instruccion Select En Una Variable @sel En Sp

Estas en el tema de Pasar Un Instruccion Select En Una Variable @sel En Sp en el foro de SQL Server en Foros del Web. Qué tal, he estado buscando si es posible pasar una instruccion SELECT en una variable (@x) en procedimiento almacenado. EJEMPLO DE LA PREGUNTA: create procedure ...
  #1 (permalink)  
Antiguo 06/11/2007, 21:44
 
Fecha de Ingreso: octubre-2007
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 0
Mensaje Pasar Un Instruccion Select En Una Variable @sel En Sp

Qué tal, he estado buscando si es posible pasar una instruccion SELECT en una variable (@x) en procedimiento almacenado.

EJEMPLO DE LA PREGUNTA:

create procedure SpTablaTempObra @min int,@max int, @sel varchar(500)--EN ESTA VARIABLE GUARDAR ALGO COMO SELECT *FROM PERSONAL--
as

create table #temporal(idtemporal int primary key)

insert into #temporal(idtemporal)--EN ESTA PARTE O EN OTRA PODER LLAMAR LA VARIABLE EJECUTANDO LA CONSULTA PARA PASAR LOS VALORES A LA TABLA TEMPORAL--

select min(idtemporal),max(idtemporal) from #temporal


Realmente no encontrado algo que muestre si es posible (que me parece que no) y mucho menos como implementarlo, ojalá y pueda alguien ayudarme les agradezco. Sí logra encontrar algo, aviso.
  #2 (permalink)  
Antiguo 07/11/2007, 00:18
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 4 meses
Puntos: 3
Re: Pasar Un Instruccion Select En Una Variable @sel En Sp

lo que se me ocurre que podrias hacer es concatenar un string y luego ejecutarlo

Declare @msql varchar

set @isql = 'select * from tabla'

exec(@isql)

igual puedes hacer
EXEC ('DROP TABLE ' + @NombreTabla)

y asi con los scripts que ocupes
__________________
roy rojas
Programación en Español: DotNetcr.com
  #3 (permalink)  
Antiguo 07/11/2007, 11:46
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Pasar Un Instruccion Select En Una Variable @sel En Sp

Si ocupas SQL SERVER 2000 o superior, en lugar de utilizar EXEC(cadena), te recomiendo que lo cambies por:

EXEC SP_EXECUTESQL @TuVariable

Donde @TuVariable, debe ser de tipo NVARCHAR.

Saludos
  #4 (permalink)  
Antiguo 08/11/2007, 00:09
 
Fecha de Ingreso: octubre-2007
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Pasar Un Instruccion Select En Una Variable @sel En Sp

Gracias por las respuestas, voy a ponerlo en marcha para saber si me funciona. Les aviso que paso y de nuevo gracias por colaborar.
  #5 (permalink)  
Antiguo 08/11/2007, 00:33
 
Fecha de Ingreso: octubre-2007
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Pasar Un Instruccion Select En Una Variable @sel En Sp

Aqí estoy de nuevo y muy contento por que si salio. Así es como aplique lo que me dijeron:

create procedure SpTablaTempObra @select nvarchar (500)--DECLARE LA VARIABLE
insert into #temporal(idtemporal)exec SP_EXECUTESQL @select--LA EJECUTO

Muchas gracias a los dos, royrojas e iislas. aunque ya saben quien acertó (iislas).
  #6 (permalink)  
Antiguo 08/11/2007, 00:35
 
Fecha de Ingreso: octubre-2007
Mensajes: 9
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Pasar Un Instruccion Select En Una Variable @sel En Sp

Gracias y hasta la proxima.
  #7 (permalink)  
Antiguo 08/11/2007, 07:58
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Pasar Un Instruccion Select En Una Variable @sel En Sp

solo como comentario....

Debido a que el codigo de la cadena dinamica se ejecuta en otro contexto, SQL Server considera el insert into (tabla) execute como una transaccion distribuida, por lo que hay que tener habilitado en el server el Coordinador de Transacciones distribuidas.

Si ejecutamos el insert into dentro del codigo dinamico se evita la transaccion distribuida.

ej.

Código:
Declare @variable nvarchar(500)

Set @variable = 'Insert into #MiTabla Select MisCampos From OtraTabla'
execute SP_EXECUTESQL @select
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:27.