1

我有一个 Oracle 函数,它接受 3 个参数并返回有四列的记录。

但我得到了一个例外,那就是

ORA-06550:第 1 行,第 7 列:
PLS-00221:“get_receipts”不是过程或未定义

这是我的代码:

OracleConnection con = new OracleConnection(oracleDB);
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;

cmd.CommandText = "get_receipts";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("p_store_num", store_num));
cmd.Parameters.Add(new OracleParameter("p_create_dt", create_date));
cmd.Parameters.Add(new OracleParameter("p_cc_last4", cc_last4));

OracleDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
    ResponseModel sample = new ResponseModel();

    sample.Field1 = dr.GetString(0);
    sample.Field2 = dr.GetString(1);
    sample.Field3 = dr.GetString(2);
    sample.Field4 = dr.GetString(3);

    response.Add(sample);
}
4

2 回答 2

1

对于 oracle 来说有点棘手

您必须将结果集作为 ref_cursor 类型从您的过程中返回

看一下这个

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/oracle-ref-cursors

于 2018-05-08T20:16:21.867 回答
0

如果这是关于表格函数,我会尝试编写一个查询,它使用该函数作为唯一的数据源并检索查询结果。

编辑:它会是这样的(未经测试):

SELECT *
  FROM TABLE(get_receipts(:p_store_num, :p_create_dt, :p_cc_last4))
于 2018-05-08T21:12:29.410 回答