SQL Server - Ejecutar una cadena con sp_executesql

   
Vista:

Ejecutar una cadena con sp_executesql

Publicado por ricardo (7 intervenciones) el 02/01/2008 17:40:39
declare @idajuste nvarchar(4000),@table nvarchar (70)
declare @sql nvarchar (4000)

set @idajuste='''0'''

set @table=''+host_name()+'.dbunion.dbo.ajusteDatos'

set @sql='select top 700 '+@idajuste+'='+@idajuste +' + '','' + convert(nvarchar,id_ajuste)
FROM '+@table+'
WHERE estatus_envio=1'

exec sp_executesql @sql

Buenos dias lo k kiero hacer es k la variable @idajuste almacene en una sola linea todos los valores que encuentra de la siguiente manera ejemplo:

'0', '9', '30'

Ya que la presenta de esta manera:

0,9
0,30

Muchas gracias espero me ayuden me urge
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ejecutar una cadena con sp_executesql

Publicado por Isaias (3308 intervenciones) el 02/01/2008 19:26:52
Para poner las comillas, agrega el char correspondiente.

SET @TUVARIABLE = CHAR(39)+TUVALOR+CHAR(39)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar una cadena con sp_executesql

Publicado por ricardo (7 intervenciones) el 02/01/2008 20:01:24
ok muchas gracias si me sirve, pero necesito algo mas es con respécto al resultado, Yo kiero k se almacene en la variable @idajuste todos los registros pero en una sola fila en cambio me devuelve los valores en varias filas ejemplo:

FILA 1: '0','9'
FILA 2: '0','30'

KIERO K APAREZCA ASI:

FILA 1: '0','9','30'


LO HE INTENTADO EN MUCHAS FORMAS PERO NO SALE, SI ME PUEDES AYUDAR GRACIAS.

declare @table nvarchar (70),@idajuste as nvarchar (4000)

set @idajuste=CHAR(39)+ '0' +CHAR(39)
set @table=''+host_name()+'.dbunion.dbo.ajusteDatos'

set @sql='select top 700 '+@idajuste+' = CHAR(39) + '+@idajuste +' + CHAR(39) + '','' + CHAR(39) + cast(id_ajuste as nvarchar) + CHAR(39)
FROM '+@table+'
WHERE estatus_envio=1'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar una cadena con sp_executesql

Publicado por Isaias (3308 intervenciones) el 02/01/2008 21:55:44
Debes hacer agregar un GROUP BY.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar una cadena con sp_executesql

Publicado por Lucian (8 intervenciones) el 04/01/2008 00:34:55
bue no se si te sirva de mucho, lo k yo haría es..
ese resultado k te devuelve en varias filas.. almacenarlo en una tabla temporal.. después por medio de un cursor.. ir concatenando los registros en una variable

DECLARE
@SQL nvarchar(4000),
@Campo nvarchar(4000)

SELECT TOP 700 Campo
INTO #Temp
FROM @Tabla
WHERE Condición

DECLARE crLista CURSOR LOCAL STATIC FOR
SELECT campo FROM #Temp
-- donde @Campo es 0, 9, 30.. por registro
OPEN crLista
FETCH NEXT FROM crLista INTO @Campo
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @SQL = @SQL + ', ' + @Campo
FETCH NEXT FROM crLista INTO @Campo
END

CLOSE crLista
DEALLOCATE crLista
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar una cadena con sp_executesql

Publicado por ricardo (7 intervenciones) el 04/01/2008 19:08:09
Muchas gracias por su ayuda ya quedo resuelto y si tube que utilizar un cursor, para solucionarlo. De verdad me sacaron de un apuro que tengan un buen dia y gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ejecutar una cadena con sp_executesql

Publicado por Isaias (3308 intervenciones) el 04/01/2008 20:52:55
Hay un GRUPO ANTI-CURSORES dentro de los conocedores de SQL SERVER, que dicen, "todo lo que se puede hacer con CURSORES, se puede hacer con T-SQL", ademas de que los cursores, no son recomendados para este motor de base de datos, ya que dependiendo de la cantidad de registros almacenados en un cursor, este, degradara la respuesta de tu servidor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar