вторник, 15 января 2013 г.

Процедуры в Oracle

create [or replace] procedure имя_процедуры
[(имя_параметра [ IN | OUT | IN OUT ]  тип [, ... ])]
{is | as}

begin
 тело_процедуры
end имя_процедуры;



in -режим по умолчанию
    входной параметр
    (параметр который к моменту выполнения уже имеет значение
     и это значение не может измениться в теле процедуры)

out -используется для параметров,
     значения которых устанавливаются только в теле процедуры.

in out -используется для параметров,
        которые могут иметь значения к моменту вызова процедуры,
        но эти значения могут быть изменены в теле процедуры.


create procedure update_tab_col(
par1 in tab.col1%type,
par2 in number
) as

var1 integer;

begin

select count(*)
into var1
from tab
where col1 = par1;

if var1 = 1 then
  update tab
  set col2 = col2 * par2
  where col1 = par1;
  commit;
end if;

exception
when others then
rollback;

end update_tab_col;
/


Вызвать данную процедуру можно так:

позиционная запись:
(для обязательных параметров)

call update_tab_col( 5, 10);

поименная запись:
(для необязятельных параметров)

call update_tab_col( par2 => 10, par1 => 5);

смешанная запись:
(начинается с позиционного набора)

call update_tab_col( 5, par2 => 10);


Получить информацию о процедуре можно так:

select * from user_procedures where object_name = 'UPDATE_TAB_COL';


Удаление процедуры:

drop procedure  update_tab_col;

Комментариев нет:

Отправить комментарий