powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отключить проверку синтаксиса для DW
7 сообщений из 7, страница 1 из 1
Как отключить проверку синтаксиса для DW
    #36177314
Заятс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, сабж. Кто что может подсказать?
Опишу ситуацию для чего это потребовалось.
Select содержит вызов функции, аргумент которой имеет тип INTEGER. При вызове в функцию передаётся разница двух дат (dtpay - :p_dt0), где dtpay - поле таблицы типа DATE (Oracle), p_dt0 - параметр типа DateTime (PB). Реальные значения и dtpay и :p_dt0 компоненты времени не содержат, т.е. их разница - целое число. Т.е. запрос корректный, через утилиты Oracle выполняется без проблем, а при сохранении Sql в редакторе dw выдаётся ошибка: ORA-01007 - несоответствие типа фактического аргумента его описанию. И соответственно запрос не сохраняется.
Обошёл проблему редактированием запроса во внешнем редакторе и последующим импортом в PB. Но как-то это некрасиво, если потребуется менять запрос - опять только через внешний редактор.

И попутный вопрос, как собственно PB проверяет синтаксис. Собственно понятно, что запрос отправляется на выполнение со значениями по умолчанию, или только препарируется, но хотелось бы знать точнее.
...
Рейтинг: 0 / 0
Как отключить проверку синтаксиса для DW
    #36177319
Заятс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл указать: PB 9.0.3
...
Рейтинг: 0 / 0
Как отключить проверку синтаксиса для DW
    #36177700
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно (или нужно) применить явное преобразование типа при задании параметра функции в SQL-select операторе
Код: plaintext
1.
2.
3.
4.
Select  a.datecolumn,
        my_func( Cast( (sysdate - a.datecolumn) as integer), a.column2)  f_result
FROM    my_table  a 
WHERE  (sysdate - a.datecolumn) >  3 
...
Рейтинг: 0 / 0
Как отключить проверку синтаксиса для DW
    #36177933
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это же Oracle - следовательно не cast, a to_date(...
Правильно советуют - менять тип внутри sql-выражения
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Как отключить проверку синтаксиса для DW
    #36179309
Заятс
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhV,

Вот что получается при сохранении запроса в редакторе dw при использовании Cast:
Код: plaintext
SELECT func1(cast((t.dtpay - :p_ds) as integer)) FROM Table t
---------------------------
ORA-00932: inconsistent datatypes: expected NUMBER got INTERVAL
...
Рейтинг: 0 / 0
Как отключить проверку синтаксиса для DW
    #36179894
ZhV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего, входной параметр определен не как datetime, а как date - поэтому компилятор не может определить какой ему считать интервал.
Надо попробовать оба операнда из операции вычитания принудительно привести к режиму DateOnly - для этого есть отдельная функция

Код: plaintext
1.
2.
SELECT   func1(  To_Number (  Trunc(t.dtpay,'DD') - Trunc(:p_ds,'DD')  )   )  f_result 
FROM Table t
...
Рейтинг: 0 / 0
Как отключить проверку синтаксиса для DW
    #36180017
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как отключить проверку синтаксиса для DW
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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