8c7f6c03

Предварительные действия


Создаем пользователя с привилегиями: create session, create table, create procedure, create any outline и alter session. Подключаемся от имени этого пользователя и выполняем следующие операторы для создания таблицы:

create table so_demo ( n1 number, n2 number, v1 varchar2(10) );

insert into so_demo values (1,1,'One');

create index sd_i1 on so_demo(n1); create index sd_i2 on so_demo(n2);

analyze table so_demo compute statistics;

Теперь необходимо создать процедуру, обращающуюся к этой таблице. Создаем сценарий c_proc.sql, содержащий следующий код:

create or replace procedure get_value ( i_n1 in number, i_n2 in number, io_v1 out varchar2 ) as begin select v1 into io_v1 from so_demo where n1 = i_n1 and n2 = i_n2; end; /

Можно, конечно, просто выполнить этот сценарий для построения процедуры, но, для большей эффектности, давайте выполним следующую команду в окне командной строки операционной системы:

wrap iname=c_proc.sql

В ответ вы должны получить:

Processing c_proc.sql to c_proc.plb

Вместо выполнения сценария c_proc.sql для генерации процедуры, выполните неочевидный сценарий c_proc.plb, и вы обнаружите, что никаких следов использованного SQL-оператора в представлении user_source нет.



Содержание раздела