|
|
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, возникла проблема при вызове из 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. Права на выполнение процедуры имеются, другими средствами данная процедура выполняется без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2006, 17:22 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
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. Кстати, символьные значения (пусть даже эти символы - цифры) в хранимую процедуру Оракла необходимо передавать в одинарных кавычках... В приведенном мной варианте я эту ошибку подправил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 07:41 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
По вашему совету заменил строку на 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2006, 17:03 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
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... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 06:32 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
Не знаю длжно ли так работать, но и со строкой qryProcedure->SQL->Text="begin null; end;"; выдает ошибку, но в на другом столбец. И без использования "\", все равно выдает ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 15:25 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 15:36 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
Что я больше всего не понимаю, так это то, что передаю я такую строку: "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? Причем это относится к передаваемой строке, т.к. если менять ее длинну, то меняется номер столбца в ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2006, 16:02 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
Рекомендую автору включить трассировку и глазами посмотреть на тот текст, который попадает в БД. Есть версия, что текст немного корежится по дороге. В частности, практически уверен, что символ 17 - это терминирующий "\0". Однако когда исправите эту проблему, обратите самое пристальное внимание на bind-переменные, которые Вы не используете. 2Станислав С: "Кстати, символьные значения ( пусть даже эти символы - цифры ) в хранимую процедуру Оракла необходимо передавать в одинарных кавычках ..." применительно к обсуждаемому тексту - бред. Хинт: речь о литералах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2006, 03:38 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
Если доступ через BDE, то можно посмотреть в SQL monitor что отправляется на Oracle. Меня много раз выручала эта прога. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 08:00 |
|
||
|
Проблема при вызове процедуры в Оракл
|
|||
|---|---|---|---|
|
#18+
В том-то и проблема что текст который показывает SQL Monitor без проблем выполняется, например в TOAD. andrey_anonymous, а bind-переменные - это те что передаются в качестве параметров, например (:time), если да, то я их использую, просто на обсуждение вынес "тестовый пример". Повторюсь, даже "begin null; end;" не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 15:00 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34153919&tid=2029844]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
143ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 461ms |

| 0 / 0 |
