【问题标题】:Save SQL print text into SSIS variable将 SQL 打印文本保存到 SSIS 变量中
【发布时间】:2021-01-21 20:07:17
【问题描述】:

我想知道是否可以将 PRINT SQL 文本保存到 SSIS 变量中。

我的查询是:

IF EXISTS (SELECT * FROM TABLE WHERE month = '1' or month = '2' or month = '3' or month = '4' 
            or month = '5' or month = '6' or month = '7' or month = '8' or month = '9')
BEGIN
PRINT = 'EXIST' 
END
ELSE
BEGIN
PRINT = 'NOT_EXIST'  
END

我需要存在或不存在来执行流文件或其他文件。我尝试使用 ResultSet(SingleRow) 但我做不到。 最好的方法是什么?

谢谢

【问题讨论】:

  • 只需将您的 PRINT 更改为 SELECT 'EXIST' AS StatusSELECT 'NOT_EXIST' AS Status 将执行 sql 任务的结果集设置为 single row 然后在结果集页面上将其映射为您的变量。 Result Name 将是 Status,然后选择您的变量。
  • 感谢@TimMylott! :) 我可以根据变量的内容执行一个或另一个流程吗??
  • @TimMylott 子查询在这种情况下是不允许的,您不能将 PRINT 与 SELECT 一起使用
  • @SandraGuilepZouaouiZandeh 你是对的,我不是说使用 print 和 select。您的答案也是使用 OUTPUT 的一个选项,两者都可以完成同样的事情。

标签: sql-server ssis ssis-2012


【解决方案1】:

您可以使用您的查询创建一个存储,如下所示:

ALTER PROCEDURE [dbo].[proc_testExistence]  (
@Result  varchar(10) OUTPUT ) AS

BEGIN

IF EXISTS (IF EXISTS (SELECT * FROM TABLE WHERE IN ('1','2','3','4','5','6','7','8','9'))
     SELECT @Result = 'Success';
ELSE
     SELECT @Result = 'Failure';
END

然后在您的 SSIS 包中创建一个名为 vResult 的变量:

然后在您的 SQL 任务中,在 SQL 语句中:

EXEC  proc_testExistence ? OUTPUT

创建此映射:

修改第一个条件成功的优先约束:

对于第二个条件失败

您的流程与此类似:

您可以添加breakpoint 以在调试期间检查变量的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2020-06-30
    • 1970-01-01
    • 2018-10-12
    • 2014-04-24
    • 1970-01-01
    相关资源
    最近更新 更多