Я попытался создать процедуру SQL на сервере Oracle. Вот мой код,
private const string InsertCallProc =
@"CREATE OR REPLACE PROCEDURE INSERTCALL (Id in varchar2,No in varchar2,
Surname in varchar2, Name in varchar2, CallType in varchar2,
CallDate in date, CallNo in varchar2, VoiceNetwork in varchar2,
Type in varchar2,TalkTime in number,PriceWithDiscount in number,
PriceWithoutDiscount in number, LmTime in date)
AS
BEGIN
INSERT INTO TMOBILE_R_CALLS (ID,NO,SURNAME,NAME,CALL_TYPE,CALL_DATE,CALL_NO,
VOICE_NETWORK, TYPE,TALK_TIME, PRICE_WITH_DISCOUNT, PRICE_WITHOUT_DISCOUNT,LM_TIME)
VALUES(Id, No, Surname, Name, CallType,CallDate, CallNo, VoiceNetwork,Type, TalkTime,
PriceWithDiscount,PriceWithoutDiscount, LmTime);
END;";
Метод с выполнением этого sql cmd, входным параметром является поле InsertCallProc
.
private void ExecuteNonQueryCmd(string cmdText)
{
using (var conn = new OracleConnection(GenerateConnectionString()))
{
conn.Open();
var cmd = new OracleCommand
{
Connection = conn,
CommandText = cmdText
};
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
}
}
Если я вызвал этот метод, процедура создается. Но если я проверю процедуру в разработчике PL/SQL, я увижу это:
Ошибки компиляции для PROCEDURE SYSTEM.INSERTCALL
Ошибка: PLS-00103: Обнаружен символ "" при ожидании одного из следующих:
текущая строка: 1 Текст: CREATE OR REPLACE PROCEDURE INSERTCALL (Id в varchar2, No в varchar2,
Я думаю, что это вызвано форматированием строки в коде С#. Потому что, если я выполняю тот же код SQL на сервере Oracle, процедура создается без проблем.
Какое хорошее решение этой проблемы?