Я пытался создать процедуру 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 Текст: СОЗДАТЬ ИЛИ ЗАМЕНИТЬ INSERTCALL ПРОЦЕДУРЫ (идентификатор в varchar2, нет в varchar2,
Я думаю, это вызвано форматированием строки вКод C #. Потому что, если я выполняю тот же код SQL на сервере Oracle, процедура создается без проблем.
Что является хорошим решением для этой проблемы?