Azure逻辑应用程序:如何将单个“每个变量”传递给“执行存储过程”步骤?

时间:2020-01-27 21:47:04

标签: sql-server azure stored-procedures azure-logic-apps

我正在使用Azure Logic App执行接受字符串输入的存储过程。

这是存储过程的定义:

ALTER PROCEDURE [ResMgmt].[usp_ExtractReportBlob] 
     (@ReportFileName VARCHAR(255),
      @ReportBlobName VARCHAR(255) OUTPUT)
AS
BEGIN
    DECLARE @SQL VARCHAR(MAX), 
            @ReportSPROCName VARCHAR(MAX);

    SET @ReportSPROCName = (SELECT ReportSPROCName
                            FROM ResMgmt.ReportMetadata
                            WHERE ReportFileName = @ReportFileName);

    SET @SQL = 'EXEC ' + @ReportSPROCName + ';';

    SELECT (@SQL);

    SET @ReportBlobName = '/<azure-storage>/' + @ReportFileName;

    RETURN @ReportBlobName;
END;

存储过程最终将输出一个字符串,该字符串将由Logic App使用,但首先是……我无法将我的Attachments Name迭代器用作存储过程的输入。存储过程接受参数ReportFileName,该参数将来自For Each步骤的迭代器:

For each step

您可以看到,在代码视图中,我正在item()结构的body键中动态引用json

Logic App code view

但是我最终在调试中遇到此错误:

Error

从调试运行时,出现上述错误。看来json格式是正确的,所以我不明白为什么会发生错误。例如,我可以确认正确的字符串值DTG Active Client List Daily.csv已传递到存储过程键ReportFileName

如何将此变量传递给存储过程?

1 个答案:

答案 0 :(得分:2)

我知道了,这很简单。我决定轻松地切换到Execute a SQL Query步骤,但是在旧方法下也可以使用。

我正在将字符串变量传递给存储过程。 json“看起来”是正确的,因为它包含在双引号中(例如" ")。但是存储过程希望单引号(例如' ')中包含一个字符串。我必须用单号手动包装变量。

像这样:

enter image description here