Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сквозной запрос к таблице ORACLE, на выходе нет таблицы / 9 сообщений из 9, страница 1 из 1
15.12.2011, 13:40
    #37577467
SergeiZhuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
Вот такой код, работает на нескольких машинках больше года, под разными операционками.
Пришла сотрудница из декрета, дали ей машинку б/у, операционка XP
Из панели ODBC тест к таблице проходит.
Пробовали средствами доп. софта ORACLE открывать эту таблицу, открывает.
Раньше работал с этой таблицей через удаленное представление, так вот оно работает на проблемной машинке,
а сквозной запрос не работает.

Просьба подсказать где засада.


ora_num = SQLCONNECT('VisaBank', 'login', 'password')

IF SQLGETPROP(ora_num, 'Asynchronous') = .T.
=SQLSETPROP(ora_num, 'Asynchronous', .F.)
ENDIF

IF SQLGETPROP(ora_num, 'BatchMode') = .T.
=SQLSETPROP(ora_num, 'BatchMode', .F.)
ENDIF

sel_settl_date = ’08.12.2011’

stroka_sql = "SELECT job_seq, job_sub_seq, bais_proc_dat, settl_date, branch_code, rtl_acct, bin_code, card, tran_type, tran_src, settl_type, db_amt, "
stroka_sql = stroka_sql + "db_ccy, db_act, cr_amt, cr_ccy, crd_act, sb_amt_sign, abvr_name, city, term_id, entry_desc, b_accnt "
stroka_sql = stroka_sql + " FROM zhuk.bais_at"
stroka_sql = stroka_sql + " WHERE settl_date >= '&sel_settl_date'"
stroka_sql = stroka_sql + " ORDER BY job_seq, job_sub_seq, bais_proc_dat, branch_code"

= SQLEXEC(ora_num, stroka_sql, 'bais_at')

DO WHILE SQLMORERESULTS(ora_num) < 2
ENDDO

Выходная таблица bais_at не создается
...
Рейтинг: 0 / 0
15.12.2011, 14:50
    #37577704
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
IF SQLExec(...) < 0
    * В процессе выполнения запроса произошла ошибка. Уточняем причину
    Local laError(1)
    =AERROR(laError)
    * Для ошибок ODBC laError[1] всегда равен 1526
    * Ошибки сервера будут в других элементах массива
    MessageBox(TransForm(laError[4]) + chr(13) + TransForm(laError[3]))
ENDIF



SQLMoreResults() предназначена для получения следующих результатов хранимых процедур, если, например, внутри одного пакета выполняются несколько команд Select. Первый SQLExec() вернет результат выполнения первого Select, а SQLMoreResult() результат выполнения второго Select.

Бесконечный цикл еще имеет смысл для асинхронного запроса, но ведь Вы специально отключаете этот режим и работает исключительно в синхронном режиме. Т.е. Вам всего-лишь надо определить значение, возвращаемое командой SQLExec(), а последующий бесконечный цикл уже не нужен.
...
Рейтинг: 0 / 0
15.12.2011, 16:27
    #37578052
P003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
1. У тебя поле settl_date какого типа ?
2. Сперва отладь запрос в самом Оракле. Как минимум.
...
Рейтинг: 0 / 0
15.12.2011, 17:30
    #37578270
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
SergeiZhuk
Код: sql
1.
stroka_sql = stroka_sql + " WHERE settl_date >= '&sel_settl_date'"

кавычки, амперсанды, конкатенация строк... не проще ли сделать дату датой (см. предыдущий пост) и использовать параметры (и text...endtext)?
Код: sql
1.
2.
3.
4.
5.
6.
7.
TEXT TO stroka_sql NOSHOW PRETEXT <по вкусу>
SELECT job_seq, job_sub_seq, bais_proc_dat, settl_date, branch_code, rtl_acct, bin_code, card, tran_type, tran_src, settl_type, db_amt,
 db_ccy, db_act, cr_amt, cr_ccy, crd_act, sb_amt_sign, abvr_name, city, term_id, entry_desc, b_accnt
 FROM zhuk.bais_at
 WHERE settl_date >= ?sel_settl_date
 ORDER BY job_seq, job_sub_seq, bais_proc_dat, branch_code
ENDTEXT
...
Рейтинг: 0 / 0
16.12.2011, 11:33
    #37579286
SergeiZhuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
ВладимирМ[src]
Бесконечный цикл еще имеет смысл для асинхронного запроса, но ведь Вы специально отключаете этот режим и работает исключительно в синхронном режиме. Т.е. Вам всего-лишь надо определить значение, возвращаемое командой SQLExec(), а последующий бесконечный цикл уже не нужен.

Попробовал без конструкции

DO WHILE SQLMORERESULTS(ora_num) < 2
ENDDO

Работает, спасибо за подсказку
...
Рейтинг: 0 / 0
16.12.2011, 11:36
    #37579298
SergeiZhuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
tanglirSergeiZhuk
Код: sql
1.
stroka_sql = stroka_sql + " WHERE settl_date >= '&sel_settl_date'"

кавычки, амперсанды, конкатенация строк... не проще ли сделать дату датой (см. предыдущий пост) и использовать параметры (и text...endtext)?
Код: sql
1.
2.
3.
4.
5.
6.
7.
TEXT TO stroka_sql NOSHOW PRETEXT <по вкусу>
SELECT job_seq, job_sub_seq, bais_proc_dat, settl_date, branch_code, rtl_acct, bin_code, card, tran_type, tran_src, settl_type, db_amt,
 db_ccy, db_act, cr_amt, cr_ccy, crd_act, sb_amt_sign, abvr_name, city, term_id, entry_desc, b_accnt
 FROM zhuk.bais_at
 WHERE settl_date >= ?sel_settl_date
 ORDER BY job_seq, job_sub_seq, bais_proc_dat, branch_code
ENDTEXT



Какова реальная разница, в части выполнения запроса, а не оформления кода, между моей конструкцией

stroka_sql = "SELECT job_seq, job_sub_seq, bais_proc_dat, settl_date, branch_code, rtl_acct, bin_code, card, tran_type, tran_src, settl_type, db_amt, "
stroka_sql = stroka_sql + "db_ccy, db_act, cr_amt, cr_ccy, crd_act, sb_amt_sign, abvr_name, city, term_id, entry_desc, b_accnt "
stroka_sql = stroka_sql + " FROM zhuk.bais_at"
stroka_sql = stroka_sql + " WHERE settl_date >= '&sel_settl_date'"
stroka_sql = stroka_sql + " ORDER BY job_seq, job_sub_seq, bais_proc_dat, branch_code"

и предложенной выше вами вами?

Пробовал вашу конструкцию, по скорости запроса все одинаково.
...
Рейтинг: 0 / 0
16.12.2011, 11:49
    #37579319
SergeiZhuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
P0031. У тебя поле settl_date какого типа ?
2. Сперва отладь запрос в самом Оракле. Как минимум.

Оракл - это карточный процессинг, у меня вход туда разрешен только через калитку ODBC
Своих программистов в этом управлении тоже нет, поэтому посотрудничать там не с кем.
...
Рейтинг: 0 / 0
16.12.2011, 12:31
    #37579379
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
SergeiZhukОракл - это карточный процессинг,В первую очередь это СУБД, а решаемые ею задачи, в общем, и карточность процессинга, в частности, к обсуждаемому вопросу никоим боком не относятся. у меня вход туда разрешен только через калитку ODBCДумаете, у других есть какие-то тайные ходы?[quot]Отладить на самом сервере - означает "отладить с использованием стандратрных для этого сервера средст отладки запросов". То есть без использования фокса и прочих "прокладок", которые не всегда показывают все серверные сообщения.
...
Рейтинг: 0 / 0
16.12.2011, 15:17
    #37579849
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
SergeiZhukКакова реальная разница, в части выполнения запроса , а не оформления кода, между моей конструкцией и предложенной выше вами вами?Если амперсанд в оракле - это обозначение параметра запроса, то никакой.
Я всё-таки снова обращу ваше внимание на то, что стоило бы дату сделать датой - если вы будете передавать её как дату , то серверу не придётся конвертировать вашу строку согласно своим настройкам, которые могут непредсказуемо измениться и повлиять на которые у вас, как я понимаю, нет возможности.
PS. Но согласитесь, мой код всё-таки читабельней, в т.ч. за счёт использования тега [ src ], которым вы упорно пренебрегаете.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сквозной запрос к таблице ORACLE, на выходе нет таблицы / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]