You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate执行带输出参数的存储过程无返回值问题

Power Automate执行带OUTPUT参数的存储过程无法获取返回值问题排查

问题详情

  • 在Power Automate中调用存储过程[APP].[GetRecordId]时,无法获取到OUTPUT参数@RecordId的返回值,返回结果里OutputParameters字段为空
  • 通过SQL Server Profiler捕获Power Automate发送的查询语句,直接在Azure Data Studio执行可正常返回Id
  • 已尝试切换至Execute A SQL Query (V2)执行该存储过程(本地测试通过),且确认执行账号具备足够权限;另一同类型使用OUTPUT参数插入记录的存储过程可正常返回Inserted.Id

存储过程代码

ALTER   PROC [APP].[GetRecordId]
           @GUID uniqueidentifier = null,
           @RecordId int OUTPUT
AS
    SET NOCOUNT ON;
    
    SELECT TOP 1 @RecordId = Id 
        FROM APP.SpecialTable
        WHERE RecordGUID = @GUID;
    RETURN;
GO

Power Automate返回结果

{
  "ResultSets": {},
  "ReturnCode": 0,
  "OutputParameters": {}
}

排查与解决方案

1. 确认Power Automate参数配置正确性

在Execute a stored procedure (V2)步骤中,必须将@RecordId参数的类型设置为Output:

  • 进入步骤的参数配置页
  • 找到@RecordId参数,将类型从默认的Input修改为Output
  • 确保参数数据类型选择int,与存储过程定义完全匹配

2. 修改存储过程,添加显式结果集返回

部分场景下,Power Automate对纯OUTPUT参数的解析存在兼容问题,可在存储过程末尾添加SELECT语句返回输出参数,同时保留原OUTPUT定义:

ALTER   PROC [APP].[GetRecordId]
           @GUID uniqueidentifier = null,
           @RecordId int OUTPUT
AS
    SET NOCOUNT ON;
    
    SELECT TOP 1 @RecordId = Id 
        FROM APP.SpecialTable
        WHERE RecordGUID = @GUID;
    
    -- 新增结果集,让Power Automate可捕获返回值
    SELECT @RecordId AS RecordId;
    RETURN;
GO

修改后,Power Automate既可以通过ResultSets获取返回的Id,OutputParameters也会正常填充。

3. 规范Execute A SQL Query (V2)的调用语法

使用该步骤时,需显式声明输出参数并带上OUTPUT关键字,示例调用语句:

DECLARE @OutputId int;
EXEC [APP].[GetRecordId] @GUID = '目标GUID值', @RecordId = @OutputId OUTPUT;
SELECT @OutputId AS RecordId;

执行后可直接从查询结果集中提取返回的Id。

4. 临时验证NOCOUNT设置的影响

虽然存储过程中已设置SET NOCOUNT ON,但少数情况下Power Automate的驱动对该设置的处理有差异,可临时注释掉该语句测试是否能正常获取输出参数(测试完成后建议恢复,避免产生额外结果集)。

内容的提问来源于stack exchange,提问作者Steven Bitaxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 01:37:27