Чтобы сначала ответить на простой вопрос, нам не нужно выполнять программный блок. Мы должны скомпилировать это. Это относительно просто:
SQL> alter session set plscope_settings='IDENTIFIERS:ALL'
2 /
Session altered.
SQL> alter function str_to_number_tokens compile
2 /
Function altered.
SQL> SELECT LPAD(' ', level*2, ' ') || name AS name, type, usage, usage_id, line, col
2 FROM user_identifiers
3 START WITH usage_context_id = 0
4 CONNECT BY PRIOR usage_id = usage_context_id;
NAME TYPE USAGE USAGE_ID LINE COL
------------------------------ ------------------ ----------- ---------- ---------- ----------
STR_TO_NUMBER_TOKENS FUNCTION DECLARATION 1 1 10
STR_TO_NUMBER_TOKENS FUNCTION DEFINITION 2 1 10
P_STRING FORMAL IN DECLARATION 3 2 10
P_SEPARATOR FORMAL IN DECLARATION 4 3 13
P_SEPARATOR FORMAL IN ASSIGNMENT 5 3 13
RETURN_VALUE VARIABLE DECLARATION 6 6 5
REGEX_STR VARIABLE DECLARATION 7 7 5
REGEX_STR VARIABLE ASSIGNMENT 8 10 9
P_SEPARATOR FORMAL IN REFERENCE 9 10 31
REGEX_STR VARIABLE REFERENCE 10 17 46
P_STRING FORMAL IN REFERENCE 11 17 36
REGEX_STR VARIABLE REFERENCE 12 16 47
P_STRING FORMAL IN REFERENCE 13 16 37
REGEX_STR VARIABLE REFERENCE 14 12 57
P_STRING FORMAL IN REFERENCE 15 12 47
RETURN_VALUE VARIABLE ASSIGNMENT 16 14 22
RETURN_VALUE VARIABLE REFERENCE 17 19 16
17 rows selected.
SQL>
(Кредит, где кредит должен быть получен, я взял этот запрос у моего партнера Сайт Тима Холла на Oracle-Base )
Кстати, обратите внимание, что PL / Scope работает с именованными программами PL / SQL (процедурами, функциями, пакетами и т. Д.). Он не работает на анонимных блоках PL / SQL. Я упоминаю об этом, потому что вы говорите о «сценариях», а не о программах. Он ничего не сделает со скриптом SQL, содержащим некоторые блоки PL / SQL.
Еще одна вещь, которую нужно иметь в виду, это то, что PL / Scope заполняет таблицы в табличном пространстве SYSAUX и может занимать много места. Вот почему он не запускается по умолчанию, и поэтому мы должны использовать его разумно.
Что касается обратной совместимости: это новая функция в 11g, и это функция компилятора. Поэтому я сомневаюсь, что это то, что вы могли бы просто установить в 10g.