|
|
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
В коде приложения: select max( column_1 ) into :var_1 from table_1 using transaction_1; При выполнении приложения возникает ошибка: SQLSTATE = 37000 [MySQL][ODBC 3.51 Driver][mysqld-4.1.12-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( column_1) from table_1' at line 1 Простой запрос по базе из того же PB работает: select max( column_1 ) from table_1; В чем дело???? Помогите пожалуйста !!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2006, 18:15 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
Сделал через динамический курсор: DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA; string sqlstatement sqlstatement = "SELECT max(column_1) FROM table_1"; PREPARE SQLSA FROM :sqlstatement using transaction_1; OPEN DYNAMIC my_cursor; FETCH my_cursor INTO :var_1; CLOSE my_cursor ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 12:39 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
Для того чтобы успешно парсить embedded SQL (НЕ динамический) PB должен знать особенности синтаксиса. Особенности эти для разных ODBC драйверов описаны в файлике pbodb90.ini (не забывайте положить этот файлик когда ставите приложение клиенту ;-) Имя секции должно совпадать с названием драйвера (в девятке можно посмотреть в Database Painter -> Driver Information -> SQL_DBMS_NAME) Хотя возможно это решается просто параметром каким нть в DBParm. В MySQL есть какой-ть профайлер или трейс? может билдеровским "trace ODBC" посмотреть ЧТО именно PB отправляет за statement? Зорин А. "I love deadlines. I like the whooshing sound they make as they fly by." -- Douglas Adams З.Ы. IMHO, надо бы разобраться а не затычку делать в виде dynamic SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 13:20 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейIMHO, надо бы разобраться а не затычку делать в виде dynamic SQL. Поддерживаю. А то уж больно на простом запросе проблема возникла. Что-то тут нечисто :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 13:54 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
А я бы сделал так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В ls_error - сообщения с приличной диагностикой ошибок Поскольку у меня для упражнений с SQL есть отдельный обьект, то это выглядит еще короче Код: plaintext 1. 2. 3. 4. 5. 6. 7. Очевидно, что в отличие от Embedded SQL - в данном случае строку SQL можно сделать очень даже переменной - и по именам таблиц и по именам переменных в них. То есть нетрудно дописать первый фрагмент до функции универсального определения max Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 16:21 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
Спасибо всем и просто за сочувствие, и за дельные советы; кое-что уже применил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 16:58 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
ZhVА я бы сделал так Ужас какой! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 17:59 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрей ЗоринАндрей Для того чтобы успешно парсить embedded SQL (НЕ динамический) PB должен знать особенности синтаксиса. Особенности эти для разных ODBC драйверов описаны в файлике pbodb90.ini (не забывайте положить этот файлик когда ставите приложение клиенту ;-) Ужас какой! :) Мне было бы лениво править код под разные варианты - то ли ODBC, то ли Native, то ли версии драйверов, то ли региональные настройки дат и разделителей чисел... Я уж не говорю про разные СУБД Я верю в могущество Виртуальной Машины PB :) - пусть она сама разбирается с СУБД. В данном случае она потратит раз в 10 больше времени по сравнению с embedded SQL - вместо 10 мкс целых 100 мкс. Но что поделать ленивому программисту - приходится ждать. Приведенный пример всего лишь мелкий фрагмент от целого - системы генерации отчетов, в том числе отчеты на динамически собираемых SQL-запросах. max() - это мелочь - вот многократно вложенные select-ы и последовательности union-ов. Когда в логах смотришь потом на получишиеся SQL-операторы - самому ручками такое не нашкрябать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2006, 21:42 |
|
||
|
select .... into ... в PB + MySQL
|
|||
|---|---|---|---|
|
#18+
Как показал мой опыт по "Когда в логах смотришь потом на получишиеся SQL-операторы - самому ручками такое не нашкрябать :)" потом также и самому не оттюнить,поэтому пмсм все генераторы отчетов хороши если есть возможность в шаблоне отчета подкрутить select (правда у некоторых подтюнивание только в /*+rule*/ заключается :(),потому как запариваешься outline оракловые для оптимизатора писать для таких "универсальных вещей" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2006, 15:14 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=34144339&tid=1337468]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 451ms |

| 0 / 0 |
