|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Добрый день. После установки патча системы Босс-кадровик образовались разкомпилленые пакеты. В спецификации функции описаны с PRAGMA RESTRICT REFERENCES...при компиляции пакета вылетает ошибка : PLS-00452: Subprogram 'NDOP' violates its associated pragma Для чего нужна эта прагма (объясните по простому по русски) и в чем ошибка??? FUNCTION ndop(pcid IN number, nm IN number DEFAULT NULL) RETURN number; PRAGMA RESTRICT_REFERENCES (ndop, WNDS, WNPS); FUNCTION ndop(pcid IN number, nm IN number DEFAULT NULL) RETURN number IS nn number; BEGIN if pcid IS NULL then RETURN NULL; end if; if pcid >= 0 then if nm IS NOT NULL then SELECT count(*) INTO nn FROM sl_is_stag WHERE pc_id = pcid AND num = nm AND num2 > 0; else -- это ID основной записи о стаже SELECT count(*) INTO nn FROM sl_is_stag s1, sl_is_stag s2 WHERE s1.id = pcid AND s1.pc_id = s2.pc_id AND s1.num = s2.num AND s2.num2 > 0; end if; else if nm IS NOT NULL then SELECT count(*) INTO nn FROM sl_is_stag WHERE isk_id = -pcid AND num = nm AND num2 > 0; else RETURN 0; end if; end if; RETURN nn; END ndop ; ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 08:28 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Версия Oracle 9.2.0.6 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 08:31 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
ElicRTFM RNDS (FAQ) Elic, слышал такую утку (в частной беседе), что RESTRICT REFERENCES "устарела" (ненужная), и из пакетов изживать надо ....... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:16 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Stax.слышал такую утку (в частной беседе), что RESTRICT REFERENCES "устарела" (ненужная), и из пакетов изживать надо ....... почему утка. Oracle сам уже в силах определить чистоту функции, подсказки ему типа не нужны :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:19 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Stax. ElicRTFM RNDS (FAQ) Elic, слышал такую утку (в частной беседе), что RESTRICT REFERENCES "устарела" (ненужная), и из пакетов изживать надоЭто не утка и в ссылке чуть выше про это написано. Но изживать её нет необходимости, она полезна для ранней диагностики ошибок: Oracle9i Application Developer's Guide - Fundamentals -> PL/SQL Compilation CheckingPRAGMA RESTRICT_REFERENCES remains available as a means of asking the PL/SQL compiler to verify that a function has only the side effects that you expect. SQL statements, package variable accesses, or calls to functions that violate the declared restrictions will continue to raise PL/SQL compilation errors to help you isolate the code that has unintended effects . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:22 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Elic Stax. ElicRTFM RNDS (FAQ) Elic, слышал такую утку (в частной беседе), что RESTRICT REFERENCES "устарела" (ненужная), и из пакетов изживать надоЭто не утка и в ссылке чуть выше про это написано. Но изживать её нет необходимости, она полезна для ранней диагностики ошибок: Oracle9i Application Developer's Guide - Fundamentals -> PL/SQL Compilation CheckingPRAGMA RESTRICT_REFERENCES remains available as a means of asking the PL/SQL compiler to verify that a function has only the side effects that you expect. SQL statements, package variable accesses, or calls to functions that violate the declared restrictions will continue to raise PL/SQL compilation errors to help you isolate the code that has unintended effects . Кстати, а у автора же не RNDS, а WNDS ... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:24 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Elic Stax. ElicRTFM RNDS (FAQ) Elic, слышал такую утку (в частной беседе), что RESTRICT REFERENCES "устарела" (ненужная), и из пакетов изживать надоЭто не утка и в ссылке чуть выше про это написано. Но изживать её нет необходимости, она полезна для ранней диагностики ошибок: Oracle9i Application Developer's Guide - Fundamentals -> PL/SQL Compilation CheckingPRAGMA RESTRICT_REFERENCES remains available as a means of asking the PL/SQL compiler to verify that a function has only the side effects that you expect. SQL statements, package variable accesses, or calls to functions that violate the declared restrictions will continue to raise PL/SQL compilation errors to help you isolate the code that has unintended effects . я ж нарошно написал утка, обычно я на слово не верю напр вот еще ссылочка https://www.metalink.oracle.com/metalink/plsql/f?p=130:14:3283734815740046997::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,376803.1,1,1,1,helvetica]Solution Remove the pragma reference or ensure they are all the same. Removing the PRAGMA reference may be best as the Application Developer's Guide within the chapter "Using Procedures and Packages" mentions that starting with 9i, the PRAGMA RESTRICT_REFERENCES doesn't need to be used and provided for backwards compatibility. It also states, it should not be used with any new code . я об этом not be used with any new code ....... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:33 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
dmidekКстати, а у автора же не RNDS, а WNDS ...А ведь действительно :) Даже скорее WNPS. 2 dvasilev В пекете есть блок инициализации или инициализируемые глобальные переменные? Собственно у самого пакета какая pragma? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:36 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
alex-ls Stax.слышал такую утку (в частной беседе), что RESTRICT REFERENCES "устарела" (ненужная), и из пакетов изживать надо ....... почему утка. Oracle сам уже в силах определить чистоту функции, подсказки ему типа не нужны :) почему я считаю такое уткой, не видел прямого текста в доке, мож из-за невнимательности, часто из-за незнания английского отразили б это в документации, типа RESTRICT REFERENCES токо для компабилити, мол на самам деле компилатор сам разбирается, а-ля TRUST зы по совету старших товарищей в новых не прописываю RESTRICT REFERENCES, в старых если правлю то Workaround: Remove the pragma restrict_references ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 16:58 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Elic В пекете есть блок инициализации или инициализируемые глобальные переменные? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 17:12 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Stax.отразили б это в документации, типа RESTRICT REFERENCES токо для компабилити, RTFM 10g: PRAGMA RESTRICT_REFERENCES – for Backward Compatibility (FAQ) И тем не менее вовсю используется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 17:20 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
ElicИ тем не менее вовсю используется: Well, используется so one could use PRAGMA RESTRICT REFERENCES. If supplied packages would not have PRAGMA RESTRICT REFERENCES, one could not write stored code with PRAGMA RESTRICT REFERENCES that calls supplied packages. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 17:29 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Elic Stax.отразили б это в документации, типа RESTRICT REFERENCES токо для компабилити, RTFM 10g: PRAGMA RESTRICT_REFERENCES – for Backward Compatibility (FAQ) Спасибо Elic, вот это я и хотел Куда мои глаза смотрели ...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 18:28 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
А вот такой вопрос, как в оракловской доке искать фразы (поиск по нескольких словах, по точной фразе) а то родной ораклячий не понял фразу Your search term "PRAGMA RESTRICT_REFERENCES – for Backward Compatibility" did not match any topics. Tips: Check the spelling of each word. Search for a shorter phrase. Use more general terms instead of specific keywords. Check your use of spaces and punctuation characters. зы google находит ...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 18:46 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Stax.А вот такой вопрос, как в оракловской доке искать фразы (поиск по нескольких словах, по точной фразе) нашел, не на той страничке искал? надо было http://www.oracle.com/pls/db102/search? а я почему-то http://www.oracle.com/pls/db10g/search?remark=quick_search&word=PRAGMA+RESTRICT_REFERENCES+%26%238211%3B+for+Backward+Compatibility видать quick_search помешал ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 18:59 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Stax. ElicВ пекете есть блок инициализации или инициализируемые глобальные переменные? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но прагма нарушается, если в инициализации использовать нарушающие процедуры/функции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 19:13 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Elic Но прагма нарушается, если в инициализации использовать нарушающие процедуры/функции да, помню это, вроде безобидный вызов dbms_%.ой нарушал прагму Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
...... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 19:27 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
dvasilevДобрый день. После установки патча системы Босс-кадровик образовались разкомпилленые пакеты. В спецификации функции описаны с PRAGMA RESTRICT REFERENCES...при компиляции пакета вылетает ошибка : PLS-00452: Subprogram 'NDOP' violates its associated pragma По моему на 8ке уже такие прагмы не нужны были. Сам всегда привык был их писать А вообще pragma_restrict_references (имя_функции,через запятую всякие (w/r)n(p/d)s) в 1й части w означает что не пишет, r чтоне читает во 1й части p что переменные пакета d что данные (не селектит или не апдейтит/инсертит/делетит таблицы) сообтвтственно если в теле функции находится что-то что конфликтует с такой прагмой это вызывает ошибку компиляяции Кстати просто вызов не пакетных функция тоже такое ажется вызывал ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 21:13 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
SxakКстати просто вызов не пакетных функция тоже такое ажется вызывал никогда не умер указать прагму для "не пакетных функций" куда ее (прагму) впихнуть? Код: plaintext 1. 2. 3. 4. 5. 6.
stax ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2007, 21:42 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Sxakсообтвтственно если в теле функции находится что-то что конфликтует с такой прагмой это вызывает ошибку компиляяции Кстати просто вызов не пакетных функция тоже такое ажется вызывалМожет стоит помолчать до восстановления дикции/координации?! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2007, 00:19 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Подскажите, могут ли regexp_like или exceptions нарушать прагму WNDS, RNDS, WNPS, RNPS ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 00:13 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Alibek B. Подскажите, могут ли regexp_like или exceptions нарушать прагму WNDS, RNDS, WNPS, RNPS ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 07:44 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
Elic Alibek B. Подскажите, могут ли regexp_like или exceptions нарушать прагму WNDS, RNDS, WNPS, RNPS ? а что предлагается им взамен? дока говорит, что parallel_enable и deterministic. окей, допустим. но эти две кляузы, в отличие от restrict_references, не обязывают функцию им соответствовать. т.е., по сути, это что-то вроде restrict_references + trust. но если я хочу гарантировать отсутствие побочек на этапе компиляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 08:26 |
|
PRAGMA RESTRICT REFERENCES
|
|||
---|---|---|---|
#18+
кит северных морей но если я хочу гарантировать отсутствие побочек на этапе компиляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2019, 09:09 |
|
|
start [/forum/topic.php?fid=52&msg=34341638&tid=1881795]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 161ms |
0 / 0 |