首页 > 解决方案 > 如何在 C# 中将表类型作为输出参数添加到 Dapper 存储过程

问题描述

我正在使用 dapper 为我的 .Net Core 微服务应用程序连接到 Oracle 数据库。

在存储过程中,我有一个这样的输出参数。

PROCEDURE INSERT_PLAN_TEST
(
   ... other parameters goes here....
   P_PARENT_PLAN_ID           MFP_PLAN.PLAN_HEADER.PARENT_PLAN_ID%TYPE DEFAULT NULL,
   OUT_PLAN_ID                OUT NUMBER,  
   O_ERR_CODE                 OUT ERR_CODE    
)
IS 

此处,O_ERR_CODE的类型为TABLE OF varchar2(200)

现在,在我的 C# 方法中,我如何传递这样的参数?

public async Task<int> CreatePlanAsync(PlanHeader planHeader)
{
    using (IDbConnection connection = _context.Database.GetOracleConnection())
    {
        connection.Open();
        var _params = new DynamicParameters();
        _params.Add("P_ORG_ID", planHeader.OrgId, DbType.Int32, ParameterDirection.Input);
        ..... other parameters goes here.....
       _params.Add("O_ERR_CODE", null, <here i need to specify the type>, ParameterDirection.Output);
    }
}

请帮助我。

标签: c#oraclestored-proceduresdapperout-parameters

解决方案


我假设,您不能在表值参数中返回数据。表值参数仅供输入;不支持 OUTPUT 关键字。


推荐阅读