|
|
|
Вызов констант
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть таблица MYCONST с полями ID,NAME, оба поля уникальны, в ней лежат справочные данные(больше миллиона строк) ID; NAME 1; Вася 2; Петя 3; Коля .... Есть пакет MYPACKAGE, в котором есть функция ConstId(pNAME varchar2), по имени(NAME) определяющая ID записи из таблицы MYCONST. В пакете MYPACKAGE есть константы, которые декларируются так: c_VASJA constant number := ConstId('Вася'); c_PETJA constant number := ConstId('Петя'); c_KOLJA constant number := ConstId('Коля'); В пакете MYPACKAGE есть функции которые вызывают эти константы по именам в курсорах: for mycur in ( select * from employee where empid in (c_VASJA,c_KOLJA) ) loop ... end loop; Вопрос - в момент исполнения курсора константы уже существуют значениями и обращения к таблице MYCONST не происходит? Или для каждой константы, в момент выполнения курсора, вызывается функция ConstId, делающая запрос к таблице MYCONST? По другому - в какой момент происходит иницализация константы заданной функцией и константа получает значение, в момент компилляции пакета MYPACKAGE или в момент обращения к константе из процедуры/функици пакета? Не бейте, может разбирался кто-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 09:40 |
|
||
|
Вызов констант
|
|||
|---|---|---|---|
|
#18+
Motorin SergeyВопрос - в момент исполнения курсора константы уже существуют значениями и обращения к таблице MYCONST не происходит? А проверить самому? Запусти в отладке одну из функций и пошагово просмотри, инициализирована ли константа или нет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2018, 10:00 |
|
||
|
|

start [/forum/topic.php?fid=52&tid=1884095]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
3040ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 3317ms |

| 0 / 0 |
