|
|
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
Подскажите можно ли выполнить несколько комманд в одном запросе? Запросы вызываются через TADOQuery.ExecSQL; Записываются в поле TADOQuery.SQL.Add('текст команды '); Или это невозможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 18:51 |
|
||
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
Впринципе, возможно, сделай просто методом тыка: TADOQuery.SQL.Add('SELECT * FROM table1; SELECT * FROM table2'); Надо только их разграничить ';' И помни, что если таблички поддерживают транзакции, то надо между разными запросами ставить COMMIT А чем тебе не походит ситуация: TADOQuery.SQL.Add('query1'); TADOQuery.SQL.Open; //ExecSQL в зависимости от запроса TADOQuery.SQL.Clear; TADOQuery.SQL.Add('query2'); TADOQuery.SQL.Open; //ExecSQL в зависимости от запроса ???????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 20:03 |
|
||
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
Опишу проблему детальнее: 1. Есть программа под MSSQL, которая стучится через АДО к своему серверу. 2. Нужно переделать ее на MySQL. 3. Запрсы простые и MySQL явно поддерживаются 4. Одна проблема есть ОГРОМНАЯ КУЧА запросов типа: DELETE FROM table1 WHERE j>2; INSETT INTO ... ; UPDATE fff SET h=4; которые выполняются в одном TADOQuery. Т.е. ; они уже разделены, но MySQL кричит, что немогет он такое выполнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2004, 20:29 |
|
||
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
Не пробовал через ADO, но напрямую работает. (в MySQL4) Может это не глюк сервера, а глюк Адо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 12:01 |
|
||
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
ArickkkkkНе пробовал через ADO, но напрямую работает. (в MySQL4) Может это не глюк сервера, а глюк Адо? Может это и так, "но разве от этого легче?"(с). На сегодняшний день проблему решил следующим образом - на обработчик события OnWillExecute TADOConnection поставил обработчик, который базово парсит предварително комманду, и если в комманде больше чем один SQL стейтмент каждый из стейтментов выполняется в отдельной TADOCommand. Ессно, при этом перед пакетом делается BeginTrans; И в зависимости от успешности промежуточных результатов делается в конце или commit или Rollback. Отлажу код - сделаю пост в этой теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 12:13 |
|
||
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
Вот обещанный код. Если кто знает, как сделать лучше - пишите, буду рад. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 13:16 |
|
||
|
Несколько команд в одном запросе.
|
|||
|---|---|---|---|
|
#18+
ArickkkkkНе пробовал через ADO, но напрямую работает. (в MySQL4) Может это не глюк сервера, а глюк Адо? Напрямую он выполняет их потому что консольный клиент сам их делит по ';' и по одному посылает их на сервер. Клиентские либы этого не делают (и слава богу что не делают). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2004, 16:00 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1854840]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 527ms |

| 0 / 0 |
