C# 如何将表对象参数从C ASP.NET Core传递到Oracle存储过程

C# 如何将表对象参数从C ASP.NET Core传递到Oracle存储过程,c#,oracle,asp.net-core,C#,Oracle,Asp.net Core,我试图将Oracle表对象out参数从ASP.NET Core 2.2上的C API传递到Oracle存储过程 我有一个名为GET\u CARD\u LIST的Oracle存储过程 创建或替换类型表\对象是VARCHAR216的表 过程获取\u CARD\u LISTUSER\u ID IN number,CARD\u LIST OUT TABLE\u OBJECT AS 开始 -没有真正的代码,只是一个示例查询结果 从自定义卡片中选择卡片编号进入卡片列表; 结束获取卡片列表; 这是我的C代码,

我试图将Oracle表对象out参数从ASP.NET Core 2.2上的C API传递到Oracle存储过程

我有一个名为GET\u CARD\u LIST的Oracle存储过程

创建或替换类型表\对象是VARCHAR216的表 过程获取\u CARD\u LISTUSER\u ID IN number,CARD\u LIST OUT TABLE\u OBJECT AS 开始 -没有真正的代码,只是一个示例查询结果 从自定义卡片中选择卡片编号进入卡片列表; 结束获取卡片列表; 这是我的C代码,如何传递一个out参数来匹配存储过程中的out参数

OracleConnection connection=\u oracleDbContext.GetConnection; 使用OracleCommand命令=新建OracleCommand { command.Connection=连接; command.CommandType=CommandType.storedProcess; command.CommandText=PRUN\u APP\u SV\u PKG.OBTIENE\u ID\u TH\P; command.Parameters.AddEMAIL,OracleDbType.Varchar2,ParameterDirection.Input.Value=email; //这是我的问题,如何传递参数? command.Parameters.AddCARD_列表,OracleDbType.?,ParameterDirection.Output; 尝试 { command.ExecuteNonQuery; } 捕获系统异常 { _logger.LogCriticalOracle-ExecuteOnQuery.Exception:{ex},ex; } 最后 { 指挥、处置; 如果connection.State==ConnectionState.Open 连接。关闭; } }
提前非常感谢

返回游标而不是嵌套表

CREATE OR REPLACE FUNCTION GET_CARD_LIST(USER_ID IN number) RETURN SYS_REFCURSOR AS
   CARD_LIST SYS_REFCURSOR;
BEGIN
    OPEN CARD_LIST AS
    SELECT CARD_NUMBER FROM CUSTOM_CARDS;

    RETURN CARD_LIST;
END GET_CARD_LIST;
对不起,如果一个过程只有一个返回值,那么我更喜欢函数而不是过程

如果必须在代码中使用现有结构,那么

CREATE OR REPLACE FUNCTION GET_CARD_LIST(USER_ID IN number) RETURN SYS_REFCURSOR AS
   CARD_LIST TABLE_OBJECT;
   res SYS_REFCURSOR;
BEGIN
    SELECT CARD_NUMBER BULK COLLECT INTO CARD_LIST FROM CUSTOM_CARDS;

    OPEN res FOR
    SELECT * FROM TABLE(CARD_LIST);    
    RETURN res;
END GET_CARD_LIST;
在C中,参数是

command.Parameters.Add("res", OracleDbType.RefCursor, ParameterDirection.ReturnValue);