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

Actualizar Todas las columnas de un tipo en una base de datos

Estas en el tema de Actualizar Todas las columnas de un tipo en una base de datos en el foro de SQL Server en Foros del Web. Hola compañeros aqui les traigo un pequeño aporte, esperando que a alguien le pueda servir, es un query que actualiza todas las columnas de un ...
  #1 (permalink)  
Antiguo 14/04/2011, 09: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
Actualizar Todas las columnas de un tipo en una base de datos

Hola compañeros aqui les traigo un pequeño aporte, esperando que a alguien le pueda servir, es un query que actualiza todas las columnas de un tipo(en este ejemplo datetime) de una tabla, quizas a alguien le sirva de ayuda o de guia para hacer algo parecido :)

Código SQL:
Ver original
  1. --Primero insertamos los nombres de las tablas que queremos actualizar
  2. SELECT
  3. TABLE_NAME, IDENTITY(INT, 1,1) AS ROW INTO #temp
  4. FROM information_schema.TABLES WHERE table_schema LIKE '%dbo%' AND table_type LIKE '%base%'
  5.  
  6. DECLARE @x INT
  7. DECLARE @total INT
  8. DECLARE @query VARCHAR(MAX)
  9. DECLARE @TABLE_NAME VARCHAR(200)
  10. DECLARE @column_name VARCHAR(200)
  11. DECLARE @datos INT
  12. DECLARE @y INT
  13. DECLARE @total2 INT
  14.  
  15. SELECT @total=COUNT(*) FROM #temp
  16. SET @x=1
  17. while @x<=@total
  18. BEGIN
  19.   --obtenemos el nombre de la tabla
  20.   SELECT @TABLE_NAME=TABLE_NAME FROM #temp WHERE ROW=@x
  21.   --y buscamos en cada columna de esa tabla el tipo de dato que nos interesa
  22.   SET @query='select column_name, table_name,identity(int, 1,1) as row into ##temp2 from information_schema.columns where table_name like '  + CHAR(39) + '%' +@TABLE_NAME + '%' + CHAR(39) +' and data_type like ' + CHAR(39) + '%date%' + CHAR(39)
  23.   EXEC Sp_sqlExec @query
  24.   SELECT @datos=COUNT(*) FROM ##temp2
  25.   IF @datos>=1
  26.   BEGIN
  27.     SELECT @total2=COUNT(*) FROM ##temp2
  28.     SET @y=1
  29.     while @y<=@total2
  30.       BEGIN
  31.                
  32.         SELECT @column_name=column_name FROM ##temp2 WHERE ROW=@y
  33.          --ya con el nombre hacemos el update a la tabla en este caso por una fecha en formato UTC
  34.         SET @query='update ' + @TABLE_NAME + ' set '+ @column_name + '=getutcdate()'
  35.         EXEC Sp_sqlExec @query
  36.         print @column_name    
  37.         SET @y=@y+1
  38.       END
  39.     SELECT @TABLE_NAME=TABLE_NAME FROM ##temp2
  40.     print @TABLE_NAME
  41.  
  42.   END
  43.   DROP TABLE ##temp2
  44.   SET @x=@x+1
  45. END

Saludos!!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: columnas, tipo, todas
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:12.