Вызов хранимой процедуры Oracle в C # с использованием «Oracle.DataAccess» (с параметром) - PullRequest
2 голосов
/ 21 марта 2011

Итак, я пытаюсь вызвать хранимую процедуру Oracle из моего приложения на C # .NET.Большинство сетевых ссылок, которые я могу найти, предлагают "использование System.Data.OracleClient;", но .Net 3.5 не распознает это пространство имен, поэтому вместо этого я использую "Oracle.DataAccess.Client".

Вот некоторые перефразированиямоего кода ниже, с ранее установленной и протестированной OracleConnection под названием 'myConn', уже заполненной параметром ': arg_myArg' (это число, если это имеет значение):

command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "exec mySchema.myProc(:arg_myArg)"
command.ExecuteNonQuery();

Хитрость в том, что процедура ничего не возвращает по проекту , она просто заполняет другую таблицу, из которой я извлекаю.Однако, когда я пытаюсь запустить приведенный выше код, я получаю «OracleException» в последней строке и выдает эту ошибку:

ORA-06550: line 1, column 13:
PLS-00103: Encountered the symbol "MYSCHEMA" when expecting one of the following:

   := . ( @ % ;
The symbol ":=" was substituted for "MYSCHEMA" to continue.

Удаление «exec» из команды дает эту ошибку вместо:

ORA-06550: line 1, column 8:
PLS-00801: internal error [22503]
ORA-06550: line 1, column 8:
PL/SQL: Statement ignored

Есть идеи? Я был бы рад что-нибудь прояснить

Это мой первый пост на stackoverflow.com и моя последняя неделя на этой работе, поэтому яценим ваше понимание и относительную поспешность с выяснением этого

1 Ответ

6 голосов
/ 21 марта 2011

Я думаю, вам нужно что-то вроде этого

command.Connection = myConn;
command.CommandType = CommandType.StoredProcedure;  
command.CommandText = "mySchema.myProc";  // the proc name   
command.Parameters.Add(/* TODO: Add parameter here */); 
command.ExecuteNonQuery();
...