SSIS 表达式中的 Case 或 if 语句
Case or if statement in SSIS expression
我在 SSIS 中有一个项目参数,我想使用它来更改我们的数据源连接。
我正在尝试在连接属性中编写一个表达式,但我做空了。我希望能够评估几个不同的值和 return 个不同的值,如果 true
这是我的
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: "Unknown Server"))
我已经尝试将其他服务器添加到此代码中,但我一定不理解您如何评估其他结果并设置其他值
基本上,我想这样做
如果Parameter = SERVER1
就给我SERVER1_ConnectionString
,如果Parameter = SERVER2
就给我SERVER2_ConnectionString
等等...
编辑:语法正确,但我的问题是我的项目参数有错字
将变量计算为表达式
最简单的方法是添加一个字符串类型的变量 @[User::ConnectionSting]
,Select 以将此变量计算为表达式,并使用以下表达式:
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: ""))
然后单击 OLEDB 连接管理器,按 F4 显示属性选项卡,转到表达式,Select ConnectionString 属性 并使用以下命令表达式:
@[User::ConnectionSting]
然后单击数据流任务和使用连接的任务并将 Delay Validation
属性 设置为 True
使用表达式任务
您可以使用相同的方法,但不是将 @[User::ConnectionSting]
计算为表达式,而是在包开头添加表达式任务并使用以下表达式:
@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ?
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))
我在 SSIS 中有一个项目参数,我想使用它来更改我们的数据源连接。
我正在尝试在连接属性中编写一个表达式,但我做空了。我希望能够评估几个不同的值和 return 个不同的值,如果 true
这是我的
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: "Unknown Server"))
我已经尝试将其他服务器添加到此代码中,但我一定不理解您如何评估其他结果并设置其他值
基本上,我想这样做
如果Parameter = SERVER1
就给我SERVER1_ConnectionString
,如果Parameter = SERVER2
就给我SERVER2_ConnectionString
等等...
编辑:语法正确,但我的问题是我的项目参数有错字
将变量计算为表达式
最简单的方法是添加一个字符串类型的变量 @[User::ConnectionSting]
,Select 以将此变量计算为表达式,并使用以下表达式:
@[$Project::Parameter] == "SERVER1" ? @[$Project::SERVER1_ConnectionString]
: ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString]
: ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString]
: ""))
然后单击 OLEDB 连接管理器,按 F4 显示属性选项卡,转到表达式,Select ConnectionString 属性 并使用以下命令表达式:
@[User::ConnectionSting]
然后单击数据流任务和使用连接的任务并将 Delay Validation
属性 设置为 True
使用表达式任务
您可以使用相同的方法,但不是将 @[User::ConnectionSting]
计算为表达式,而是在包开头添加表达式任务并使用以下表达式:
@[User::ConnectionSting] = (@[$Project::Parameter] == "SERVER1" ?
@[$Project::SERVER1_ConnectionString] : ( @[$Project::Parameter] == "SERVER2" ? @[$Project::SERVER2_ConnectionString] : ( @[$Project::Parameter] == "SERVER3" ? @[$Project::SERVER3_ConnectionString] : "")))