В SSIS у меня есть команда OLE DB SQL в моем потоке данных, которая выполняет хранимую процедуру, которая, в свою очередь, выполняет «вложенную» хранимую процедуру (uspMyNestedSP
). Кажется, я не могу получить ВОЗВРАТ из вложенной хранимой процедуры. Все возвращаемые SSIS - это int @RETURN_VALUE
, а не строка, возвращаемая в хранимой процедуре.
Обратите внимание, я не могу изменить uspMyNestedSP
.
Я пробовал использовать параметры и настройки OUTPUT
RETURN
к этому, но все, что я получаю, - это пустая строка.
Мне нужно сделать это в OLE DB SQL Команду построчно.
Единственное Другой способ, который я могу придумать, - это разделить поток данных на два потока данных и сделать это с помощью SQL ЗАДАЧИ?
Вот хранимая процедура:
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.
Вот моя SQL команда в SSIS:
EXEC ? =uspMyMainSP ?, ?