es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Bucle a través de las combinaciones de tabla y columna.

Necesito hacer un script que recorra todas las tablas y seleccione aquellas columnas donde se especifique el nombre.

Puedo encontrar las columnas donde se especifican nombres,

SELECT sys.columns.name AS ColumnName, tables.name AS TableName 
FROM sys.columns 
JOIN sys.tables ON sys.columns.object_id = tables.object_id
                AND sys.columns.name LIKE 'name'

pero ¿cómo puedo recorrer cada fila de la declaración SELECT y ejecutar un comando de actualización en la tabla TableName y columna ColumnName, y actualizar el contenido a algo como ‘Anon’ en SQL?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar SQL dinámico y un cursor para recorrer los resultados de la instrucción select y ejecutar un comando de actualización en cada tabla y columna.

    Aquí tienes un ejemplo de script:

    DECLARE @ColumnName NVARCHAR(100)
    DECLARE @TableName NVARCHAR(100)
    DECLARE @UpdateCommand NVARCHAR(MAX)
    
    DECLARE columnCursor CURSOR FOR
        SELECT sys.columns.name AS ColumnName, tables.name AS TableName 
        FROM sys.columns 
        JOIN sys.tables ON sys.columns.object_id = tables.object_id
        AND sys.columns.name LIKE 'name'
    
    OPEN columnCursor
    
    FETCH NEXT FROM columnCursor INTO @ColumnName, @TableName
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @UpdateCommand = 'UPDATE ' + @TableName + ' SET ' + @ColumnName + ' = ''Anon'''
        EXEC sp_executesql @UpdateCommand
    
        FETCH NEXT FROM columnCursor INTO @ColumnName, @TableName
    END
    
    CLOSE columnCursor
    DEALLOCATE columnCursor
    

    Este script utiliza un cursor para recorrer los resultados de la instrucción select y, para cada fila, construye un comando de actualización de SQL dinámico utilizando los valores TableName y ColumnName. El procedimiento almacenado del sistema sp_executesql se utiliza para ejecutar el comando de actualización de SQL dinámico.

    Ten en cuenta que el SQL dinámico puede ser peligroso si no se utiliza correctamente, así que asegúrate de probar el script a fondo y úsalo solo en datos de prueba o en un entorno controlado.

Comments are closed.