|
|
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Есть 2 метода вызова ХП оракловой из ВФП 1 ********************************* cSP = "BEGIN fin.FM32YO_Update_Persons_IN_PUT2(1, '0', ?Recordid, ?Sur, ?Nam, ?Fat, " + ; "?Jobb, ?Posit, ?DPAId, ?Pass, ?Adr, ?InDay, ?OutDay, ?cWhoDidIt); END;" k = SQLExec(gnConnHandle, cSP) ********************************** 2 ******************************** cSP = "{call fin.FM32YO_Update_Persons_IN_PUT2(1, '0', ?Recordid, ?Sur, ?Nam, ?Fat, ?Jobb, ?Posit, ?DPAId, ?Pass, ?Adr, ?InDay, ?OutDay, ?cWhoDidIt)}" k = SQLExec(gnConnHandle, cSP) ******************************* Метод 2, при трассировке TOAD-овским SQL Monitor-ом выдавал мне какую-то ошибку.. но отрабатывал несмотря на нее... ну просто показывало в логе кукаю-то ошибку, а именно: Timestamp: 12:10:18.901 BEGIN fin.FM32YO_Update_Persons_IN_PUT2;END; Вот сообщение об ошибке Oracle error occurred: 6550 (ORA-06550: line , column :) ---------------------------------- а вот ХП-шка выполнилась!!!! без проблем Timestamp: 12:10:18.963 BEGIN -- proccall fin.FM32YO_Update_Persons_IN_PUT2(NTODO=>1,CRECORDID=>'0',CPUTNOMER=>:V001 , SURNAME=>:V002 ,NAME1=>:V003 ,FATHER=>:V004 ,JOB=>:V005 ,POSITION=>:V006 , ID=>:V007 ,PASSPORT=>:V008 ,ADRESS=>:V009 ,STARTDAY=>:V010 ,ENDDAY=>:V011 , CWORKER=>:V012 ); END; :V001 = '69928' :V002 = 'МЕЗЕВ' :V003 = 'Маргарета' :V004 = <NULL> :V005 = <NULL> :V006 = <NULL> :V007 = <NULL> :V008 = <NULL> :V009 = <NULL> :V010 = '02/06/2005' :V011 = '01/07/2005' :V012 = '06/12/2005 12:10:16 ' ---------------------------------- Timestamp: 12:10:19.197 но ошибка эты никак не влияла на работу процедуры.... ну подумал я и все же перешел на вызов ХП по методу 1 НО!!! теперь заметил чисто методом тыка операторов, что при вводе анкет, некоторые имена в частном случае "Маргарета" - не срабатывает ХП-шка методом 1.. просто вылетает, говорит что в 1-й строке ее ошибка... Сама ошибка ORA-06502 PL/SQL: numeric or value error ORA-06512: at line 1 а 1-я строка ж CREATE OR REPLACE PROCEDURE FM32YO_Update_Persons_IN_PUT2 Замечу, что подобное происходит НЕ всегда , а только при определенніх именах что ли... вот только одно имя отследил... но быфло их много... перешел.. просто попробовать на метод 2 опять.. все.. проходит и ошибки нету..., то есть ТОАД- все еще показывает ошибку в логе, но мне ж надо было побороть ошибку, которая возникала у операторов, что я и сделал мистика или ОДБС дрова чудят? (они не родные Оракловы а Мелкософтовские) Сам текст ХП-шки вот: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 13:29 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Hi FM32YO aka KID! > CWORKER=>:V012 ); > :V012 = '06/12/2005 12:10:16 ' А это нормально? Чего-это у тебя cWorker такой странный... Может не в "Маргарите" дело :) И ещё - там случаем не пересекаются русские и латинские буковки? Может что-то с кодировкой не то... P.S. Ну уж коль саму ХП привёл, то и скрипт для создания таблицы приводи, и полный фоксовый код - в т.ч. присвоение переменных используемых при вызове ХП. А ошибка в первой строке - значит собственно при получении параметров и случилось страшное. P.P.S. Всегда считал что именно через Call и надо работать, используя анонимные PL/SQL блоки подобные твоему варианту 1 лишь в крайних случаях :) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2005, 03:49 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ! Igor Korolyov > CWORKER=>:V012 ); > :V012 = '06/12/2005 12:10:16 ' А это нормально? Чего-это у тебя cWorker такой странный... да - это нормально... cWorker - это что-то вроде махонького аудита "кто и когда записал данные", аудит собственно туповатый, но другого в данном случае и не требовалось Igor Korolyov Может не в "Маргарите" дело :) И ещё - там случаем не пересекаются русские и латинские буковки? Может что-то с кодировкой не то... да вот пробовал и так и эдак... и, только при CALL перестало болезненно реагировать на "Маргариту" Igor Korolyov P.S. Ну уж коль саму ХП привёл, то и скрипт для создания таблицы приводи, и полный фоксовый код - в т.ч. присвоение переменных используемых при вызове ХП. Скрипт для таблицы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. Фоксовый код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. я вот подумал.. вероятно проблема тут: Recordid = THISFORM.nChosenPrimaryId в случае редактирования - все нормально, а в случае инсерта данное значение вероятно есть нонсенс.... хотя может и нет Igor Korolyov P.P.S. Всегда считал что именно через Call и надо работать, используя анонимные PL/SQL блоки подобные твоему варианту 1 лишь в крайних случаях :) CALL из-за глючного ODBC вызывает ошибку, которая в SQLMonitore показывается, поэтому попробовал с BEGIN начать.. поиграться так сказать.... только в этом причина ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2005, 09:29 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Hi FM32YO aka KID! > да - это нормально... cWorker - это что-то вроде махонького аудита "кто и > когда записал данные" Хех, ну так там далее должно быть имя, у меня имя в логе видно - вот я и удивился, отчего же только дата :) > да вот пробовал и так и эдак... и, только при CALL перестало болезненно > реагировать на "Маргариту" У меня на локальном (8.1.7) что с MS драйвером, что с родным, что в первом синтаксисе, что во втором - всё работает и ошибок не вызывает... Правда я опции хранения выкинул из скрипта, ну чтоб не создавать TableSpace-ов одноимённых твоим и т.п. А вот то КАК оно работает - тут да, отличия имеются. MS драйвер при использовании call запрашивает описание процедуры из базы (это не видно в мониторе, т.к. это идёт уже "после" ODBC драйвера - но видно на самом сервере). При этом он создаёт в команде вызова все эти "хитрые" имена для параметров, хотя для работы это и не обязательно - достуточно указания порядка их следования... > CALL из-за глючного ODBC вызывает ошибку, которая в SQLMonitore > показывается Ну дык вот это то мне и было интересно, но я ошибку так и не наблюдаю - у меня ODBC "переводит" синтаксис с call в тот самый begin - end... Правда по разному для разных драйверов, но без ошибок... Хотя возможно это зависит от того, какие права имеются у юзера под которым идёт коннект... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 03:21 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Ну дык вот это то мне и было интересно, но я ошибку так и не наблюдаю - у меня ODBC "переводит" синтаксис с call в тот самый begin - end... Правда по разному для разных драйверов, но без ошибок... Хотя возможно это зависит от того, какие права имеются у юзера под которым идёт коннект... Ну а у меня вот выводит ошибочку. Но, Слава Богу ошиюбка эта никак не влияет на работу, если бы ты мне в свое время не указал на SQL Monitor - я бы ее никогда и не увидел :-) вот еще раз проверил вот она ошибка, хотя после нее идет нормальная хп... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 12:39 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Hi FM32YO aka KID! Т.е. он сначала пытается вызвать ХП без параметров? Странно это... Какие права имеет тот аккаунт под которым ты работаешь? Не используешь ли часом SQLPREPARE()? Вообще на стороне сервера тоже есть трассировщик, я просто не в курсе как им пользоваться :( Можно посмотреть что доходит в итоге до сервера... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2005, 23:21 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi FM32YO aka KID! Какие права имеет тот аккаунт под которым ты работаешь? Под аккаунтом ты имеешь в виду того юзера, при помощи которого я вхожу в БД оракла? права я ему не давал.. ибо создал таблицы и Хп в уже готовой схеме и хожу под тем же юзером, который там изначально был. Так что думаю права у него как у владельца объектов. Это только сейчас начал пробовать писать со своим юзером Igor Korolyov Не используешь ли часом SQLPREPARE()? нет Ну, собственно программа работает и хрен с ней так как это просто маленькое дополнение в централизованной разработке, сделанное по просьбе коллег. проще самому было написать - чем просить официально разработчика, обосновывая потребность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2005, 10:05 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Hi FM32YO aka KID! > Под аккаунтом ты имеешь в виду того юзера, при помощи которого я вхожу в > БД оракла? Да, того который в DSN прописан или в строке коннекта. Важно то, какие роли ему назначены - может ODBC не может достучаться до стандартных системных процедур "описания параметров ХП" - от того и "пробует" её таким странным способом... Хотя тогда он наверное не смог бы вынуть имена параметров, что как мы видим ему удалось... В общем пока не ясно что там внутри ODBC происходит. и зачем она выполняет этот "фиктивный" предварительный вызов ХП... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 02:14 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Да, того который в DSN прописан или в строке коннекта. Важно то, какие роли ему назначены - он есть "владелец" всех таблиц, с которыми данная программа работает, и так же "владелец" ХП-шки.. то есть я ему не давал особых прав, так как владелец имеет права на работу со своими объектами? а самого юзера создавал не я.. он годами есть.. я просто в него "воткнул" таблицу + сиквенс + ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 12:29 |
|
||
|
Вызов ХП Оракла из ВФП 7,0 (интересный баг???)
|
|||
|---|---|---|---|
|
#18+
Hi FM32YO aka KID! Не ты не понял... Я не про права на саму таблицу и на твою ХП, я про права на СИСТЕМНУЮ ХП - ту которая "описывает" все параметры для твоей ХП - SYS.DBMS_DESCRIBE.DESCRIBE_PROCEDURE() Уж не знаю почему, но именно её у меня вызывает MS драйвер при использовании синтаксиса {call } При использовании синтаксиса begin ... end; - данная ХП не вызывается. Также она не вызывается при использовании Oracle ODBC Driver (с любым синтаксисом). Я кстати нашёл где хранится серверный лог (обычно это папка udump - но точнее смотри параметр user_dump_dest в init.ora - конечно она находится на сервере), и как его включать в TOAD (в Session Browser просто выбрать интересующую сессию и из контекстного меню Start trace - ну или соответствующей кнопкой на панели). В общем как говорится читайте мануалы - они рулез :) Лог правда своеобразный (оно и понятно - сервер свои статистические параметры туда выводит), но кое чего из него почерпнуть можно - главное, что это не то что фокс шлёт ODBC драйверу (именно это ловит SQL Monitor) - а это то что ODBC драйвер шлёт самому серверу. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 02:03 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33434467&tid=1592772]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 536ms |

| 0 / 0 |
