【发布时间】:2020-08-06 10:21:51
【问题描述】:
在 SSIS 中,我的数据流中有一个 OLE DB SQL 命令,它执行一个存储过程,该过程又执行一个“嵌套”存储过程 (uspMyNestedSP)。我似乎无法从嵌套存储过程中获得 RETURN。所有 SSIS 返回的是 int @RETURN_VALUE,而不是存储过程中返回的字符串。
注意,我无法更改uspMyNestedSP。
我尝试使用OUTPUT 参数并将RETURN 设置为此,但我得到的只是一个空字符串。
我需要在 OLE DB SQL 命令中逐行执行。
我能想到的唯一其他方法是将数据流拆分为两个数据流,并在其间设置一个 SQL TASK?
这是存储过程:
ALTER PROCEDURE [dbo].[uspMyMainSP]
@_EthnicityIOCode NCHAR(20),
@_EthnicityDescription NVARCHAR(60)
AS
DECLARE @EthnicityCode NCHAR(8)
DECLARE @EthnicityDescription NVARCHAR(60)
DECLARE @AuditMessage NVARCHAR(128)
SET NOCOUNT ON;
IF LEN(TRIM(@_EthnicityIOCode)) > 0 AND LEN(TRIM(@_EthnicityDescription)) > 0
BEGIN
SELECT
@EthnicityCode = ethEthnicityCode,
@EthnicityDescription = ethDescription
FROM
TC36sp1.dbo.Ethnicity
WHERE
(ethIOCode = @_EthnicityIOCode)
IF @@ROWCOUNT = 0
BEGIN
-- Insert
EXEC uspMyNestedSP '*df', @_EthnicityDescription, @_EthnicityIOCode, 1
SET @AuditMessage = ''''
END
ELSE
IF @_EthnicityDescription <> @EthnicityDescription
BEGIN
-- Update
EXEC uspMyNestedSP '*df', @_EthnicityDescription, @_EthnicityIOCode, 1
SET @AuditMessage = ''''
END
-- This is what I want to return back to SSIS!...
RETURN @EthnicityCode
END
@EthnicityCode 字符串是我想要返回的。这可以正常工作并在 SSMS 中手动运行时返回。
这是我在 SSIS 中的 SQL 命令:
EXEC ? =uspMyMainSP ?, ?
【问题讨论】:
-
我不认为 OLEDB 命令可以处理任何输出。我对这样的项目使用脚本组件。当您需要了解自己的身份价值时,这是更常见的做法。
标签: sql-server ssis oledbcommand