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

[SOLUCIONADO] Insertar el nombre de las columnas en ellas mismas

Estas en el tema de Insertar el nombre de las columnas en ellas mismas en el foro de SQL Server en Foros del Web. Hola, necesito un script que inserte en cada columna (varchar(20)) de una tabla el nombre de la misma columna. O sea, q en la columna ...
  #1 (permalink)  
Antiguo 07/02/2014, 08:00
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Insertar el nombre de las columnas en ellas mismas

Hola, necesito un script que inserte en cada columna (varchar(20)) de una tabla el nombre de la misma columna. O sea, q en la columna ABC inserte 'ABC'.
Es esto posible?, me pueden ayudar?
No lo hago a mano pq quisiera utilizar el procedimiento en muchas tablas.
Saludos.
  #2 (permalink)  
Antiguo 07/02/2014, 09:54
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, 8 meses
Puntos: 774
Respuesta: Insertar el nombre de las columnas en ellas mismas

puedes usar lo siguiente:

Código SQL:
Ver original
  1. SELECT name,IDENTITY(INT,1,1) AS rn INTO #temp FROM sys.all_columns WHERE object_id IN (SELECT object_id FROM sys.all_objects WHERE TYPE='U' AND name='table_name')
  2. SELECT * FROM #temp

este query te inserta en la tabla temporal #temp los nombres de las columnas de la tabla que indicas en el query(table_name)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 07/02/2014, 13:18
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Insertar el nombre de las columnas en ellas mismas

Hola Libras, gracias por tu ayuda; lo que pasa es que yo quiero insertar los mismos nombres en las mismas columnas y de esta manera solo los tengo en otra tabla.
Pudiera ser mediante un cursor??
  #4 (permalink)  
Antiguo 07/02/2014, 13:24
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, 8 meses
Puntos: 774
Respuesta: Insertar el nombre de las columnas en ellas mismas

y eso para que lo quieres??? para encabezado de un reporte???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 07/02/2014, 13:33
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Insertar el nombre de las columnas en ellas mismas

Si, es para un reporte muy grande y quiero probar que al ubicar los campos en el reporte me hayan quedado bien puestos.
  #6 (permalink)  
Antiguo 07/02/2014, 13:42
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, 8 meses
Puntos: 774
Respuesta: Insertar el nombre de las columnas en ellas mismas

eso lo podrias hacer desde la aplicacion, y para ubicar los campos se me hace una muy mala idea, pero cada quien y porque no haces el

select 'campo1','campo2'
union
query

no te funciona???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 07/02/2014, 13:58
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Insertar el nombre de las columnas en ellas mismas

Es que las columnas en la BD me variarán mucho y como también son tantas estoy buscando una forma de acerlo automáticamente.
  #8 (permalink)  
Antiguo 07/02/2014, 14:00
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Insertar el nombre de las columnas en ellas mismas

De cualquier manera te agradezco. Ya estaba pensando en hacerlo desde la aplicación. Igual me puedes decir si se puede hacer algo similar con un cursor?
Saludos y muchas gracias por tu tiempo.
  #9 (permalink)  
Antiguo 07/02/2014, 14:10
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, 8 meses
Puntos: 774
Respuesta: Insertar el nombre de las columnas en ellas mismas

no te recomiendo un cursor seria mas facil con una estructura while, los cursores consumen demasiada memoria en el servidor y una estructura while hace lo mismo :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 07/02/2014, 14:32
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Insertar el nombre de las columnas en ellas mismas

me puedes dar un hint de como sería una estructura while,.
  #11 (permalink)  
Antiguo 07/02/2014, 14:36
 
Fecha de Ingreso: diciembre-2011
Mensajes: 77
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Insertar el nombre de las columnas en ellas mismas

otra cosa, en transac sql se puede ejecutar un texto como si fuer una consulta?
o sea, suponque tenga la variable "COND" como un varchar, entonces poder hacer algo como esto:
Select * from Tabla where COND
??
  #12 (permalink)  
Antiguo 07/02/2014, 15:02
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, 8 meses
Puntos: 774
Respuesta: Insertar el nombre de las columnas en ellas mismas

sip pero es con un query dinamico

Código SQL:
Ver original
  1. DECLARE @query nvarchar(MAX)
  2. DECLARE @campo VARCHAR(30)
  3. SET @campo='campo'
  4. SET @query='select ' + @campo + 'from tabla where ' + @campo + '=condicion'
  5. EXEC sp_executesql @query
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: columnas, nombre, 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 05:38.