变量可以在 OLE DB 命令中定义吗?
Can Variable define in OLE DB Command?
我定义了一个变量 Test,它是 @[User::Test],字符串值为 "abc"。
我的问题是我可以设置更新我的 table 的 sql 命令,其中我的列值 = 我的变量吗?
示例。
update tableA set ValueB = '1pm' where ValueA = '" + @[User::Test] + "'
但这对我不起作用。如何解决?
您必须在 SQL 文本中使用问号并使用查询配置绑定变量(IIRC,它是 Parameter Mapping
选项卡)。例如,我曾经做过这样的事情:
-- declare vars
declare @table varchar(256);
declare @sql varchar(max);
-- get the table as a parameter
set @table = ?;
-- drop the table if it already exists
if (object_id(@table) is not null) begin;
set @sql = 'drop table '+@table+';';
exec(@sql);
end;
-- create the table
set @sql = '
create table '+@table+' (
IPID int,
...
_rn int
);
';
exec(@sql);
这里,我在Google中找到了截图:https://www.simple-talk.com/iwritefor/articlefiles/1455-SsisVariables_Fig11-620x524.jpg
我定义了一个变量 Test,它是 @[User::Test],字符串值为 "abc"。
我的问题是我可以设置更新我的 table 的 sql 命令,其中我的列值 = 我的变量吗?
示例。
update tableA set ValueB = '1pm' where ValueA = '" + @[User::Test] + "'
但这对我不起作用。如何解决?
您必须在 SQL 文本中使用问号并使用查询配置绑定变量(IIRC,它是 Parameter Mapping
选项卡)。例如,我曾经做过这样的事情:
-- declare vars
declare @table varchar(256);
declare @sql varchar(max);
-- get the table as a parameter
set @table = ?;
-- drop the table if it already exists
if (object_id(@table) is not null) begin;
set @sql = 'drop table '+@table+';';
exec(@sql);
end;
-- create the table
set @sql = '
create table '+@table+' (
IPID int,
...
_rn int
);
';
exec(@sql);
这里,我在Google中找到了截图:https://www.simple-talk.com/iwritefor/articlefiles/1455-SsisVariables_Fig11-620x524.jpg