встроенные функции deterministic?

hewlett
Дата: 18.03.2011 12:42:31
Являются ли встроенные функции to_char, to_date deterministic? и написано ли где про это?

спасибо.
-2-
Дата: 18.03.2011 12:46:41
hewlett
и написано ли где про это?
select owner, objecT_name, procedure_name, deterministic
from dba_procedures
where procedure_name like 'TO_CHAR';
ORA__SQL
Дата: 18.03.2011 13:31:17
select owner, objecT_name, procedure_name, deterministic
from dba_procedures
where procedure_name like 'UPPER';

owner      objecT_name     procedure_name    deterministic
SYS           STANDARD         UPPER             NO


автор
Any top-level or package-level PL/SQL functions that are used in the index expression must be declared as DETERMINISTIC. That is, they always return the same result given the same input,for example, the UPPER function. You must ensure that the subprogram really is deterministic, because Oracle Database does not check that the assertion is true.


Ничего не понял. Просветите )))
orawish
Дата: 18.03.2011 13:39:25
ORA__SQL
..
Ничего не понял. Просветите )))

а что не ясно? на словах - вам пообещали. на уровне спецификации сочли возможным
не делать
(варианты - забыли сделать / ~хотели перформанса / .. )
-2-
Дата: 18.03.2011 13:45:47
ORA__SQL
Ничего не понял. Просветите )))
Во-первых, не вижу противоречий, что upper "always return the same result" и что "Oracle Database does not check that the assertion is true".

Во-вторых, пакет standard фикциональнаяобертка sql-функций для поддержки pl/sql, а в pl/sql детерминизм роли не играет.
Если вернуться к to_char. То он в общем случае действительно недетерминированный.
ORA__SQL
Дата: 18.03.2011 13:45:52
orawish
ORA__SQL
..
Ничего не понял. Просветите )))

а что не ясно? на словах - вам пообещали. на уровне спецификации сочли возможным
не делать
(варианты - забыли сделать / ~хотели перформанса / .. )

Т.е. FBI по UPPER строить вообще говоря нельзя. И надо писать свою функцию as deterministic.
orawish
Дата: 18.03.2011 13:51:26
ORA__SQL
..
Т.е. FBI по UPPER строить вообще говоря нельзя. И надо писать свою функцию as deterministic.

формально? получается так. (но вам же таки обещали :)
можно в саппорте переспросить. (100:1 - ещё раз пообещают )