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;
[(имя_параметра [ 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;
Комментариев нет:
Отправить комментарий