powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Сквозной запрос к таблице ORACLE, на выходе нет таблицы
9 сообщений из 9, страница 1 из 1
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37577467
SergeiZhuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такой код, работает на нескольких машинках больше года, под разными операционками.
Пришла сотрудница из декрета, дали ей машинку б/у, операционка 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
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37577704
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37578052
P003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. У тебя поле settl_date какого типа ?
2. Сперва отладь запрос в самом Оракле. Как минимум.
...
Рейтинг: 0 / 0
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37578270
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37579286
SergeiZhuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ[src]
Бесконечный цикл еще имеет смысл для асинхронного запроса, но ведь Вы специально отключаете этот режим и работает исключительно в синхронном режиме. Т.е. Вам всего-лишь надо определить значение, возвращаемое командой SQLExec(), а последующий бесконечный цикл уже не нужен.

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

DO WHILE SQLMORERESULTS(ora_num) < 2
ENDDO

Работает, спасибо за подсказку
...
Рейтинг: 0 / 0
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37579298
SergeiZhuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Сквозной запрос к таблице ORACLE, на выходе нет таблицы
    #37579319
SergeiZhuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P0031. У тебя поле settl_date какого типа ?
2. Сперва отладь запрос в самом Оракле. Как минимум.

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


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