powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема при вызове процедуры в Оракл
11 сообщений из 11, страница 1 из 1
Проблема при вызове процедуры в Оракл
    #34147788
SAS_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, возникла проблема при вызове из Borland C++ Builder 6.0 процедуры на PL/SQL, вызывается процедура следующим образом, через Query:
qryProcedure->SQL->Clear();
qryProcedure->SQL->Text="begin";
qryProcedure->SQL->Add("pavel.load_limit.loadlimit(234,1148);");
qryProcedure->SQL->Add("end;");
qryProcedure->ExecSQL();

При выполнении этого запроса выдается ошибка следующего содержания:

Project Project1.exe raised exception class EDBEngineError with message 'Key violation.
[Oracle][ODBC][Ora]ORA-06550: Строка 1, столбец 6:
PLS-00103: Встретился символ "" в то время как ожидалось одно из следующих:
General SQL error.
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a
double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint
set sql execute commit forall merge <a single-quoted SQL string> pipe
Символ "" опущен.
ORA-06550: Строка 2, столбец 38:
PLS-00103'.
Process stopped. Use Step or Run to continue.

Права на выполнение процедуры имеются, другими средствами данная процедура выполняется без проблем.
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34148723
SAS_ZЗдравствуйте, возникла проблема при вызове из Borland C++ Builder 6.0 процедуры на PL/SQL, вызывается процедура следующим образом, через Query:
qryProcedure->SQL->Clear();
qryProcedure->SQL->Text="begin";
qryProcedure->SQL->Add("pavel.load_limit.loadlimit(234,1148);");
qryProcedure->SQL->Add("end;");
qryProcedure->ExecSQL();

При выполнении этого запроса выдается ошибка следующего содержания:

Project Project1.exe raised exception class EDBEngineError with message 'Key violation.
[Oracle][ODBC][Ora]ORA-06550: Строка 1, столбец 6:
PLS-00103: Встретился символ "" в то время как ожидалось одно из следующих:
General SQL error.
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a
double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint
set sql execute commit forall merge <a single-quoted SQL string> pipe
Символ "" опущен.
ORA-06550: Строка 2, столбец 38:
PLS-00103'.
Process stopped. Use Step or Run to continue.

Права на выполнение процедуры имеются, другими средствами данная процедура выполняется без проблем.
Ты перпутал разные средства для работы с Ораклом.
При посылке из твоей программы анонимный блок должен идти в одну строку (пусть даже она будет очень длинная):
Код: plaintext
1.
qryProcedure->SQL->Text="begin pavel.load_limit.loadlimit(\'234\',\'1148\'); end;"

Кстати, символьные значения (пусть даже эти символы - цифры) в хранимую процедуру Оракла необходимо передавать в одинарных кавычках... В приведенном мной варианте я эту ошибку подправил...
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34151046
SAS_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По вашему совету заменил строку на

qryProcedure->SQL->Text="begin pavel.load_limit.loadlimit(\'234\',\'1148\'); end;";

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

Project Project1.exe raised exception class EDBEngineError with message 'Key violation.
[Oracle][ODBC][Ora]ORA-06550: Строка 1, столбец 53:
PLS-00103: Встретился символ "" Символ "" опущен.'. Process stopped. Use Step or Run to continue.
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34152003
SAS_ZПо вашему совету заменил строку на

qryProcedure->SQL->Text="begin pavel.load_limit.loadlimit(\'234\',\'1148\'); end;";

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

Project Project1.exe raised exception class EDBEngineError with message 'Key violation.
[Oracle][ODBC][Ora]ORA-06550: Строка 1, столбец 53:
PLS-00103: Встретился символ "" Символ "" опущен.'. Process stopped. Use Step or Run to continue.
I'm sorry... Конечно же символ \ перед одинарной кавычкой не нужен... Спутал с конструкцией \", когда этот символ обязателен...
Еще раз I'm sorry...
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34153919
SAS_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю длжно ли так работать, но и со строкой
qryProcedure->SQL->Text="begin null; end;";
выдает ошибку, но в на другом столбец.
И без использования "\", все равно выдает ошибку.
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34153979
SAS_ZНе знаю длжно ли так работать, но и со строкой
qryProcedure->SQL->Text="begin null; end;";
выдает ошибку, но в на другом столбец.
И без использования "\", все равно выдает ошибку.

А у меня вот так работает (в процедуру передается один параметр типа VARCHAR2):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 
 AnsiString Komanda,KodUsl;
 TADOConnection *Conn;
 TADOCommand *ADOCommand1;
  ...
 Komanda="begin make_sps('";
 Komanda+=KodUsl.Trim();
 Komanda+="'); end;";
 ADOCommand1->CommandText=Komanda;

 try
  {
   ADOCommand1->Execute();
   err= 0 ;
   }
  catch (Exception &exception)
    {
     ShowMessage(exception.Message);
     err=- 1 ;
    }
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34154112
SAS_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что я больше всего не понимаю, так это то, что передаю я такую строку:
"begin null; end;" - в ней 16 символов
а ошибку он выдает такую
Project Project1.exe raised exception class EDBEngineError with message 'Key violation.
[Oracle][ODBC][Ora]ORA-06550: Строка 1, столбец 17:
PLS-00103: Встретился символ "" Символ "" опущен.'.
Что такое столбец 17, если символов 16? Причем это относится к передаваемой строке, т.к. если менять ее длинну, то меняется номер столбца в ошибке.
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34155744
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую автору включить трассировку и глазами посмотреть на тот текст, который попадает в БД.
Есть версия, что текст немного корежится по дороге.
В частности, практически уверен, что символ 17 - это терминирующий "\0".
Однако когда исправите эту проблему, обратите самое пристальное внимание на bind-переменные, которые Вы не используете.
2Станислав С: "Кстати, символьные значения ( пусть даже эти символы - цифры ) в хранимую процедуру Оракла необходимо передавать в одинарных кавычках ..." применительно к обсуждаемому тексту - бред.
Хинт: речь о литералах.
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34169186
Alex_Toms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если доступ через BDE, то можно посмотреть в SQL monitor что отправляется на Oracle.
Меня много раз выручала эта прога.

Удачи
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34170787
SAS_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том-то и проблема что текст который показывает SQL Monitor без проблем выполняется, например в TOAD.

andrey_anonymous, а bind-переменные - это те что передаются в качестве параметров, например
(:time), если да, то я их использую, просто на обсуждение вынес "тестовый пример".

Повторюсь, даже "begin null; end;" не работает.
...
Рейтинг: 0 / 0
Проблема при вызове процедуры в Оракл
    #34193629
SAS_Z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а не может ли быть проблем с настройками оракла или с особенностями его работы?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема при вызове процедуры в Оракл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]