SSIS带参数执行SQL任务

标签 ssis

我需要根据参数执行sql任务。 假设如果我的@parameter = 1,则执行此sql;如果@parameter = 2,则执行此sql。我想到了一个解决办法,但是有没有什么直接的办法,比如 Len(?) 或 Len(@parameter1) ..

底线:我需要根据传递给参数的内容执行sql查询。 如果可能的话请告诉我。

最佳答案

如果您希望执行 SQL 任务基于变量运行不同的存储过程,那么有几个选项:

  1. 您可以创建一个带有参数的存储过程。存储过程将使用 IF ELSE 代码来执行 Lamak 注释中描述的代码。如果您想执行不同的存储过程,那么这不是一个理想的解决方案。如果您只有极少量的查询或存储过程要执行,这可能会起作用。

  2. 您可以编写一个变量来根据表达式计算存储过程的名称。如果您只有几个存储过程要执行,那么这可能会很有效,但它无法扩展到大量存储过程。从编码的角度来看,它也很难理解,特别是当表达式很复杂时。

  3. 您可以编写一个查询或存储过程来生成单独的存储过程调用命令。您可以运行执行 SQL 任务来加载结果集。结果集将映射到对象数据类型的变量。然后,您可以迭代 For Each Container 中的变量来为变量赋值。如果您有大量代码需要更改,则比 100 个表达式更容易管理。

根据您对我的评论,听起来您想尝试选项 2。以下是选项 2 的详细步骤:

  1. 在包级别范围的“变量”窗口中创建一个名为 SqlCommand、数据类型为 String 的变量。

  2. 将 SqlCommand 变量的 EvaluateAsExpression 属性设置为 True。

  3. 单击表达式生成器链接。

  4. 以下是使用条件运算符的 IF THEN ELSE 表达式示例。

    1 == 0 ? “选择一些字段= GETDATE();” : "SELECT SomeField = GETDATE() - 2;"

    如果 1 等于 0,则返回第一个命令。如果 1 不等于 0,则返回第二条命令。在这种情况下,由于 1 不等于 0,因此返回第二个命令。您可以将 1 == 0 部分更改为您实际想要评估的条件。

  5. 将执行 SQL 任务添加到控制流。

  6. 打开执行 SQL 任务编辑器。

  7. 将连接设置为所需的数据库连接管理器。

  8. 设置 SQLSourceType = 变量。

  9. 将 SourceVariable 设置为 User::SqlCommand。

  10. 关闭编辑器并测试包。

关于SSIS带参数执行SQL任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414391/

相关文章:

sql - 我可以使用 SSIS 直接从 Google Analytics API 提取数据吗?

SSIS - 如何遍历文件夹中的文件并获取路径+文件名,最后执行存储过程,参数为路径+文件名

mysql - 如何透视 MySQL 或 SSIS 中不唯一的列?

sql-server - 如何使用SSIS读取Excel电子表格中的变量值

sql - 使用 SQL Server 数据库邮件以表格格式发送电子邮件

ssis - 如何让 MSBuild 处理所有 SSIS 项目

excel - SSIS Excel日期在第一行而不是最后一行为空=>日期始终为空

sql-server - 组合 2 个日期字段以进行条件拆分

SSIS 构建包含引号 (") 的变量字符串

c# - 无法加载文件或程序集 'Microsoft.SqlServer.DTSRuntimeWrap