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

[SOLUCIONADO] Obtener conjunto de filas para un cursor con sp_executesql

Estas en el tema de Obtener conjunto de filas para un cursor con sp_executesql en el foro de SQL Server en Foros del Web. Hola a todos Quiero recorrer mediante un cursor los resultados de EXEC sp_executesql N'SELECT '+@para1+','@para2+'FROM '+@para3 pero la sintaxis solo permite un select o una ...
  #1 (permalink)  
Antiguo 30/06/2016, 12:27
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años
Puntos: 0
Obtener conjunto de filas para un cursor con sp_executesql

Hola a todos

Quiero recorrer mediante un cursor los resultados de EXEC sp_executesql N'SELECT '+@para1+','@para2+'FROM '+@para3 pero la sintaxis solo permite un select o una tabla común, ¿ alguna idea ?. Gracias.
  #2 (permalink)  
Antiguo 30/06/2016, 12:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 7 meses
Puntos: 774
Respuesta: Obtener conjunto de filas para un cursor con sp_executesql

Inserta el resultado de tu query dinamico en una tabla temporal y recorres estos resultados con tu cursor algo asi:


Código SQL:
Ver original
  1. EXEC sp_executesql N'SELECT '+@para1+','@para2+' into ##temp FROM '+@para3

y ya puedes hacer el

Código SQL:
Ver original
  1. SELECT * FROM ##temp

y eso lo puedes usar para tu cursor

ahora para que quieres usar el cursor? es realmente necesario recorrer fila por file loas resultados de tu query?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/06/2016, 12:43
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener conjunto de filas para un cursor con sp_executesql

Gracias por tu rápida respuesta, la solucion no la veía y es sencilla. Quiero usar un cursor para recorrer en una instancia de SQL todas las bases, por supuesto no de sistema, y buscar en ellas una determinada tabla que no tiene porque repetirse, contar los articulos y si pasan de una determinada cantidad exportar los primeros a un txt usando BCP y para eso tengo que "armarme" mis instruciones.
  #4 (permalink)  
Antiguo 01/07/2016, 09:07
 
Fecha de Ingreso: abril-2010
Mensajes: 68
Antigüedad: 14 años
Puntos: 0
Respuesta: Obtener conjunto de filas para un cursor con sp_executesql

Hola a todos, como dato curioso y por si le pasa a alguien, estuve un buen rato "armando" mi consulta para pasársela al BCP y me devolvía error, después de revisarla una y otra vez y no encontrar nada anormal me fui por lo absurdo, igual esto tenía que saberlo, y era que al construir la cadena insertaba en el script cambios de línea para poder ver bien en la pantalla, nada, que el SQL no le da importancia a los CHR(10) pero resulta que el BCP si así que antes de pasarla hice un REPLACE(CHR(10),'') y a correr. Saludos a todos.
  #5 (permalink)  
Antiguo 01/07/2016, 11:28
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
Respuesta: Obtener conjunto de filas para un cursor con sp_executesql

Buscar una tabla en todas las bases de una instancia

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''customer'''
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 02/07/2016, 15:23
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Obtener conjunto de filas para un cursor con sp_executesql

Cita:
Iniciado por iislas Ver Mensaje
Buscar una tabla en todas las bases de una instancia

sp_MSforeachdb 'SELECT "?" AS DB, * FROM [?].sys.tables WHERE name like ''customer'''
Elegante solución.
Una duda, será posible sustituir siempre el uso de cursores por consultas CTE ????
  #7 (permalink)  
Antiguo 04/07/2016, 09:57
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
Respuesta: Obtener conjunto de filas para un cursor con sp_executesql

Los CURSORES, ya lo hemos dicho por aca, no estan recomendados, ya que se crean en memoria y afectan el tiempo de respuesta del servidor, siempre hay una solucion mucho menos intrusiva para los cursores
__________________
MCTS Isaias Islas

Etiquetas: conjunto, cursor, filas, select, sql, tabla
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 15:11.