Sql 使用foreach循环容器在表中创建新列-can';t解决“问题”;靠近'的语法不正确@P1和x27&引用;错误
我正在尝试使用foreach循环容器获取行值并将它们放入字段中。但出于某种原因,我无法让它正常工作,而不会遇到以下错误: alter table/databasename/.dbo.cp_hh_foo…”失败,出现以下错误:““@P1”附近的语法不正确 问题似乎出现在最后的execute SQL语句中。前两个executesql语句工作正常。我想我在变量/参数映射中犯了一个错误,但我不确定 我的数据流如下所示: 基本上是这样的:Sql 使用foreach循环容器在表中创建新列-can';t解决“问题”;靠近'的语法不正确@P1和x27&引用;错误,sql,sql-server,ssis,Sql,Sql Server,Ssis,我正在尝试使用foreach循环容器获取行值并将它们放入字段中。但出于某种原因,我无法让它正常工作,而不会遇到以下错误: alter table/databasename/.dbo.cp_hh_foo…”失败,出现以下错误:““@P1”附近的语法不正确 问题似乎出现在最后的execute SQL语句中。前两个executesql语句工作正常。我想我在变量/参数映射中犯了一个错误,但我不确定 我的数据流如下所示: 基本上是这样的: 第一个执行SQL任务创建新表 第二个执行SQL任务选择一个表,该表
alter表MIT\u Client\u proficility.dbo.cp\u hh\u footprint add?varchar(255)
- 在最终的执行sql任务中,在参数“(?)”而不是“?”周围添加括号
- 在最终执行sql任务中,将参数名称更改为“Param1”
- 在最终执行sql任务中,更改参数大小
- 在第二秒内执行sql任务,更改“结果名称”
- 在最终的执行sql任务中,将查询更改为“declare@sql varchar(255)set@sql=”alter table MIT_Client_proficility.dbo.cp_hh_footprint add?varchar(255)”exec(@sql)
alter table MIT_Client_Profitability.dbo.cp_hh_footprint add ? varchar(255)
是数据定义语言(DDL)语句。无法参数化DDL。您必须使用字符串连接来创建语句。
alter table MIT_Client_Profitability.dbo.cp_hh_footprint add ? varchar(255)
是数据定义语言(DDL)语句。无法参数化DDL。您必须使用字符串连接创建语句。以David的答案为基础 创建一个新的SSIS变量@[User::Sql],类型为String,并在表达式框中添加以下语法
"alter table MIT_Client_Profitability.dbo.cp_hh_footprint add " + @[User::AllocItemSQL1] + " varchar(255);"
这种方法的好处在于,您可以在执行SQL任务上设置一个断点,并在任务尝试执行它之前查看该语句的外观。然后修改执行SQL任务以使用新变量并删除参数
否则,动态tsql方法应该可以工作,只需修改语法即可。令牌替换在字符串中不起作用。根据我的思维模式,类似这样的事情应该会起作用
declare @newcolumn varchar(255) = ?;
declare @SQL varchar(255) = 'alter table MIT_Client_Profitability.dbo.cp_hh_footprint add ' + @newcolumn + ' varchar(255)';
exec(@SQL);
以大卫的答案为基础 创建一个新的SSIS变量@[User::Sql],类型为String,并在表达式框中添加以下语法
"alter table MIT_Client_Profitability.dbo.cp_hh_footprint add " + @[User::AllocItemSQL1] + " varchar(255);"
这种方法的好处在于,您可以在执行SQL任务上设置一个断点,并在任务尝试执行它之前查看该语句的外观。然后修改执行SQL任务以使用新变量并删除参数
否则,动态tsql方法应该可以工作,只需修改语法即可。令牌替换在字符串中不起作用。根据我的思维模式,类似这样的事情应该会起作用
declare @newcolumn varchar(255) = ?;
declare @SQL varchar(255) = 'alter table MIT_Client_Profitability.dbo.cp_hh_footprint add ' + @newcolumn + ' varchar(255)';
exec(@SQL);
你不是说MySQL吧?如果没有,请删除标签。你不是说MySQL,是吗?如果没有,请移除标签。