Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ALTERTABLE然后在单个语句中更新_Sql_Sql Server_Database_Etl_Talend - Fatal编程技术网

Sql ALTERTABLE然后在单个语句中更新

Sql ALTERTABLE然后在单个语句中更新,sql,sql-server,database,etl,talend,Sql,Sql Server,Database,Etl,Talend,我需要修改(添加2列),然后更新同一个表 以下是我尝试的查询: ALTER TABLE A ADD c1 int,c2 varchar(10) UPDATE A set c1 = 23, c2 = 'ZZXX' 我需要一次运行以上两个查询 我使用的是Talend ETL工具,其中我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询) 但上述查询不起作用 我在Microsoft SQL数据库中进行了测试。我得到以下错误: 味精207,16级,状态1

我需要修改(添加2列),然后更新同一个表

以下是我尝试的查询:

ALTER TABLE A
ADD c1 int,c2 varchar(10)

UPDATE  A set c1 = 23, c2 = 'ZZXX'
我需要一次运行以上两个查询

我使用的是Talend ETL工具,其中我们有一个组件tMssqlrow,它允许我们运行多个查询(我在单个组件中使用10到15个更新查询)

但上述查询不起作用

我在Microsoft SQL数据库中进行了测试。我得到以下错误:

味精207,16级,状态1,第5行

无效的列名“c1”。味精207

16级,状态1,第5行

列名“c2”无效


任何人都可以帮我解决这个问题。

在两个查询之间使用GO。

您不能在单个语句(或批处理)中完全执行此操作,而且您使用的工具似乎不支持将
GO
作为批处理分隔符

不过,您可以使用
EXEC
在子批处理中运行它

ALTER TABLE A
  ADD c1 INT, c2 VARCHAR(10);

EXEC('
UPDATE A
SET    c1 = 23,
       c2 = ''ZZXX'';
    ');
注意:查询中的所有单引号都需要如上所述加倍,以便在字符串文本中转义

或者,您也可以借助一些默认约束在单个语句中获得类似的结果

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;
但这与原始查询不完全相同,因为默认约束将被保留,可能需要删除。

尝试此操作

ALTER TABLE A ADD c1 int,c2 varchar(10)

GO

UPDATE  A set c1 = 23, c2 = 'ZZXX'

GO

ALTER
语句之后添加
GO
。如果我们在MSSQL中使用GO,它可以工作,但我不能在talend中使用GO,talend在GO附近出现错误::语法错误