varios valores update una tabla registros registro otra modificar datos comando actualizar sql sql-server database etl talend

sql - valores - alterar la tabla y luego actualizar en una sola declaración



update de una base de datos a otra sql server (3)

Tengo un requisito donde necesito Modificar (agregar 2 columnas) y luego actualizar la misma tabla.

Aquí está la consulta que he intentado:

ALTER TABLE A ADD c1 int,c2 varchar(10) UPDATE A set c1 = 23, c2 = ''ZZXX''

Necesito ejecutar las dos consultas anteriores a la vez.

Estoy utilizando la herramienta Talend ETL, en esto tenemos un componente tMssqlrow, que nos permite ejecutar varias consultas (estoy usando de 10 a 15 consultas de actualización en un solo componente).

Pero la consulta anterior no está funcionando.

He probado en la base de datos Microsoft SQL. estoy obteniendo el siguiente error:

Mensaje 207, Nivel 16, Estado 1, Línea 5

Nombre de columna no válido ''c1''. Msg 207,

Nivel 16, estado 1, línea 5

Nombre de columna no válido ''c2''.

alguien puede ayudarme a resolver este problema


No puede hacer esto exactamente en una sola declaración (o lote) y parece que la herramienta que está utilizando no es compatible con GO como un delimitador de lote.

Sin embargo, puede utilizar EXEC para ejecutarlo en un lote secundario.

ALTER TABLE A ADD c1 INT, c2 VARCHAR(10); EXEC('' UPDATE A SET c1 = 23, c2 = ''''ZZXX''''; '');

NB: todas las comillas simples en la consulta deben duplicarse como se indica arriba para escapar de ellas dentro de una cadena literal.

O alternativamente, podría lograr resultados similares en una sola declaración con la ayuda de algunas restricciones predeterminadas.

ALTER TABLE A ADD c1 INT NULL CONSTRAINT DF_A_c1 DEFAULT 23 WITH VALUES, c2 VARCHAR(10) CONSTRAINT DF_A_c2 NULL DEFAULT ''ZZXX'' WITH VALUES;

Pero esto no es exactamente lo mismo que la consulta original, ya que las restricciones predeterminadas se dejarán atrás y es posible que sea necesario eliminarlas.


Prueba esto

ALTER TABLE A ADD c1 int,c2 varchar(10) GO UPDATE A set c1 = 23, c2 = ''ZZXX'' GO


Usa GO entre tus 2 consultas.