|
|
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Выполняю вот такой зарпос через VF OLE DB 9.0: Код: 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. 102. Понимаю что запрос неоптимальный, его можно переписать без использования троих подзапросов для получения сумм, но больше интерсует почему возникает таквя ошибка, причем если последний подзапрос (... AS Опла30) убрать - то запрос выполняется без проблем. Нашел на MSDN ссылку: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fox7help/html/err1812.asp но чего то никакого внятного овтета не получил, подскажите, где может быть ошибка? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 18:22 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Перед SELECT напишите команду Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 19:01 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
В принципе, это надо понимать буквально. В VFP есть ограничение на длину одной команды - не более 8,192 символов. Хотя твой запрос не превышает 5К, так что с этой точки зрения все в порядке. Однако еще одна причина может быть в слишком сложном условии. Точнее, в слишком большом количестве условий. Это можно настроить при помощи функции SYS(3055) По русски об этой настройке можешь почитать здесь http://foxclub.ru/rhproject/project/html/0bb1bcde-9289-4992-8b3b-6df637f44944.htm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 19:03 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Sergey ChПеред SELECT напишите команду Код: plaintext Спасибо огомное, но сразу же появился второй вопрос. Поскольку с описания указанном "ВладимирМ" (и Вам также спасибо) во втором посте сказано что SYS(3055,2000) надо писать до выполнения запроса. Но как заставить теперь OLE DB провайдер вернуть результат не первого а последнего запроса, ведь первім запросом будет как раз =SYS(3055,2000). В MS SQL есть такая команда как SET NOCOUNT ON - которая решает эту проблему, а как быть с данным примером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 19:20 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Можно все оформить в качестве хранимой процедуры VFP... Либо выдавать команду до SELECT (VB.NET) : Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 20:51 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Проблему решил, не надо было делать метод CLOSE для OLE DB Provider после каждого выполнения зарпоса. Но когда решил эту проблему - возникла другая, теперь, после выполнения =SYS(3055, 2000) при попытке выполнить запрос с (0) выдается вот такое сообщение: "Insufficient stack space", причем если вызвать снова =SYS(3055, 2000), то возвращается 2000, т.е. установленное значение = 2000. Странно, почему может возникать такое сообщение, ведь уже выполнил команду по повышению уровня значимости жо 2000? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 20:51 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Можно попробовать освободить память Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2007, 22:54 |
|
||
|
VF OLE DB 9.0 - ошибка "SQL: Statement too long"
|
|||
|---|---|---|---|
|
#18+
Сделал Код: plaintext Оказівается, что чем больше ставить параметр в SYS(3055,440) - тем меньше остается памяти под стек, соответственнно даже если поставить 640 - то уже выдается сообщение о нехватке памяти под стек, а вот 440 - как раз в самый раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=212&tid=1589844]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 363ms |

| 0 / 0 |
