istudent Ответов: 3

Как вызвать функцию oracle в C# ?


I have an oracle function,which takes 3 parametes and return records which has four columns. 

But I am getting an exception which is 

ORA-06550: line 1, column 7:
PLS-00221: 'get_receipts' is not a procedure or is undefined

this is my code. 


					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);
                   
                }


Что я уже пробовал:

this is my code. 


					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);
                   
                }

3 Ответов

Рейтинг:
1

Wendelius

Проверьте несколько вещей:

-Убедитесь, что функция компилируется, что вы не получаете никаких сообщений об ошибках во время компиляции.

- Если владельцем функции является другой пользователь, чем тот, который ее вызывает, определите схему в вызове, например [schema].[процедура] или создайте синоним для функции.

- Убедитесь, что вызывающий абонент имеет EXECUTE привилегии для функции.


Рейтинг:
0

Patrice T

Цитата:
Как вызвать функцию oracle в C# ?

Проблема не в вызове хранимой процедуры, проблема в том, что SQL drtbrt не знает, какую хранимую процедуру вы вызываете.
Цитата:
ORA-06550: строка 1, колонка 7:
PLS-00221: 'get_receipts' не является процедурой или не определен

Сообщение довольно явное!
Проверьте, какие хранимые процедуры существуют на SQL server.
И исправьте имя процедуры или создайте процедуру.


istudent

Это имя функции в БД. Он существует в БД.

Patrice T

Сообщение об ошибке довольно явное.
Можете ли вы перечислить процедуру и скопировать/вставить то, что говорит сервер ?
Там должно быть какое-то написание, но мы не видим вашего SQL-сервера.

Рейтинг:
0

istudent

Эй, ребята, спасибо вам.. Я спросил парня, который создал функцию для хранения proc и внес следующие изменения в мой код. пожалуйста, дайте мне знать, если это хорошо, чтобы обеспечить максимальный размер int..

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));
cmd.Parameters.Add(new OracleParameter("o_return_cur", OracleDbType.RefCursor,int.MaxValue,ParameterDirection.Output));


Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.