Я новичок в PL/SQL и был бы очень признателен за помощь в этом. Я создал процедуру для копирования контрактов. Теперь я хочу вызвать из этой процедуры другую процедуру, которая скопирует все программы, связанные с контрактом, который я копирую. В одном контракте может быть несколько программ.
Вызов другой процедуры PL/SQL внутри процедуры
Ответы (2)
Вы можете вызвать другую процедуру в другом пакете, используя PackageName.ProcedureName(vcParameters => 'InputParameter1');
Если процедура находится в том же пакете, вы можете сделать это без PackageName
, поэтому просто ProcedureName(vcParameters => 'InputParameter1');
Вы вызываете процедуру, просто помещая ее имя и параметры в свой код, например.
begin
dbms_output.put_line('Demo');
end;
или внутри процедуры,
create or replace procedure demo
as
begin
dbms_output.put_line('Demo');
end;
Я использовал dbms_output.put_line
в качестве примера процедуры, но очевидно, что любая другая процедура будет вызываться таким же образом:
begin
foo;
bar(1);
demo(true, 'Bananas', date '2018-01-01');
end;
По какой-то причине у многих новичков возникает соблазн добавить exec
перед вызовом процедуры. Я не знаю, откуда это взялось, потому что в PL/SQL нет такого ключевого слова. Возможно, они думают о SQL*Plus execute
, которая может быть сокращена до exec
. Однако SQL*Plus — это отдельная утилита командной строки со своими собственными командами, которые не имеют ничего общего с языком PL/SQL.