【问题标题】:SSIS execute sql task returncode from SPSSIS从SP执行sql任务返回码
【发布时间】:2019-12-03 19:28:59
【问题描述】:

我正在尝试从我的 SP 获取返回码,然后根据它的值(0 或 1),它将转到下一个任务。

Create Procedure sp_test
AS
DECLARE @cmdline VARCHAR(500),
@ReturnCode INT 

SELECT @cmdline = 'dir z:'

CREATE TABLE #temp (SomeCol VARCHAR(500))

INSERT #temp
EXEC @ReturnCode = master.dbo.xp_cmdshell @cmdline

IF @ReturnCode <> 0
BEGIN
    SELECT SomeCol   
    FROM #temp
    WHERE SomeCol IS NOT NULL
END

DROP TABLE #temp

RETURN @ReturnCode
GO

现在在我的 SSIS 执行 SQL 任务中,我输入并指定 ResultSet = Single Row

DECLARE @return_value int
EXEC    @return_value = [dbo].[sp_test]
SELECT  'ReturnValue' = @return_value 

这是我得到的错误,

[执行 SQL 任务] 错误:为变量“变量”赋值时出错:“无法在结果集中找到列 ReturnValue。”。

我需要那个 ReturnCode 值,以便我可以将它用于我的下一个任务。

【问题讨论】:

  • 你为什么要RETURN你的输入参数..?这是没有意义的。 RETURN 用于返回 SP 的成功; 0 表示成功,其他表示失败。如果要“返回”一个标量值,请使用 OUTPUT 参数。

标签: sql-server ssis


【解决方案1】:

假设 OLE DB 提供程序,结果名称应为 0,因为它是结果集的第零个元素。此外,请确保“常规”选项卡上的“结果集”类型为 ... Single Row 或任何标签。

另外,不需要参数映射,因为您的存储过程不接受参数(输入或输出)

【讨论】:

    【解决方案2】:

    你必须尝试以下逻辑...

    将以下代码放入SQL Statement

    DECLARE @return_value int
    SET @return_value=?
    EXEC    ? = [dbo].[sp_test]
    SELECT  'ReturnValue' = ? 
    

    并将结果集设置为快照..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 1970-01-01
      • 2017-01-16
      • 2021-12-29
      • 2023-03-24
      相关资源
      最近更新 更多