首页 > 解决方案 > 如何从 Azure 数据工厂中的存储过程获取日期字符串输出?

问题描述

我在 Azure SQL DB 中有一个存储过程,它返回 2 个输出参数,startDateendDate基于输入日期字符串。

这是存储过程:

CREATE PROCEDURE dbo.SP_DEDUCE_START_DATE_END_DATE
    @inputDateTimeString NVARCHAR(MAX) NULL,
    @startDate NVARCHAR(MAX) NULL OUT,
    @endDate NVARCHAR(MAX) NULL OUT
AS
BEGIN
    -- exact logic omitted as to demonstrate the 2 outputs date string only
    SELECT 
        @inputDateTime AS inputDateTime, 
        @startDate AS startDate, @endDate AS endDate

    RETURN;
END
GO

我在寻找什么:一个完整​​的端到端解决方案:

  1. 从存储过程中startDate获取2 个输出日期字符串endDate
  2. 将 2 个日期字符串存储到 2 个管道变量START_DATEEND_DATE(因为我有其他处理逻辑来影响管道变量)
  3. 将 2 个管道变量作为参数提供给下游数据流

我尝试过/查看过的内容:

  1. 这个SO 答案中的链接- 它很接近,但不是一个完整的答案,因为语法似乎不完整
  2. 链接提到存储过程活动不能用于访问 SP 输出;将需要查找活动

标签: sql-serverstored-proceduresazure-data-factoryazure-data-flow

解决方案


我想分享我最终的端到端工作解决方案。

这是我最终管道的简化概述: 在此处输入图像描述 触发 SP 的查找活动;然后设置 2 个变量,然后馈送到下游数据流。

提供给 SP 的参数语法: 在此处输入图像描述 您必须检查Treat as null2 个输出的选项。然后将日期字符串提供给 SP。

读取 SP 输出并设置变量(此处仅使用 START_DATE 作为示例,因为 END_DATE 相同): 在此处输入图像描述

投放@activity('SP_DEDUCE_START_DATE_END_DATE').output.firstRow.startdate

要将 2 个变量提供给下游数据流: 在此处输入图像描述

放入@variables('START_DATE')管道表达式中。


推荐阅读