Как мне вызвать функцию Oracle в C #, которая принимает параметры и возвращает записи? - PullRequest
0 голосов
/ 08 мая 2018

У меня есть функция 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);
}

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Если речь идет о табличной функции, я бы попытался написать запрос, который бы использовал функцию в качестве единственного источника данных и получить результаты запроса.

РЕДАКТИРОВАТЬ :быть примерно таким (непроверенным):

SELECT *
  FROM TABLE(get_receipts(:p_store_num, :p_create_dt, :p_cc_last4))
0 голосов
/ 08 мая 2018

для оракула немного сложнее

вы должны вернуть набор результатов как тип ref_cursor из вашей процедуры

проверить это

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

...