【发布时间】:2021-08-03 16:40:25
【问题描述】:
我在 Azure SQL DB 中有一个存储过程,它根据输入日期字符串返回 2 个输出参数 startDate 和 endDate。
这是存储过程:
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
我在寻找什么:完整的端到端解决方案:
- 从存储过程中获取两个输出日期字符串
startDate、endDate - 将 2 个日期字符串存储到 2 个管道变量
START_DATE、END_DATE(因为我有其他处理逻辑来影响管道变量) - 将 2 个管道变量作为参数提供给下游数据流
我尝试过/查看过的内容:
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
为什么要将日期存储为
nvarchar(max),将它们保存为正确的类型date或datetime -
@marc_s 感谢您的建议。存储过程实际上是一个遗留的开发产品,用于实现一些重要的业务逻辑。不幸的是,存储过程被其他一些生产系统采用,因此存储过程不太可能被修改。但是,我会牢记您的命名约定建议,并避免下次这样做:)
-
@Charlieface 感谢您的建议。正如在另一条评论中回答的那样,存储过程是一些遗留开发产品。我的猜测是,对于某些系统集成,它们被保留为 narchar/string,但我认为我不会评论这是否是一种好的做法,因为它与 ADF 无关。
标签: sql-server stored-procedures azure-data-factory azure-data-flow