Вызов другой процедуры PL/SQL внутри процедуры

Я новичок в PL/SQL и был бы очень признателен за помощь в этом. Я создал процедуру для копирования контрактов. Теперь я хочу вызвать из этой процедуры другую процедуру, которая скопирует все программы, связанные с контрактом, который я копирую. В одном контракте может быть несколько программ.


person Jessie    schedule 09.08.2016    source источник
comment
Прочтите stackoverflow.com/help/how-to-ask.   -  person Rene    schedule 09.08.2016
comment
Пожалуйста, покажите свой код   -  person Thomas    schedule 09.08.2016
comment
Почитайте про приватные процедуры в оракуле. Вы найдете решение.   -  person XING    schedule 09.08.2016
comment
Нет никакой разницы, вызываете ли вы процедуру из процедуры или из блока pl/sql; если вы можете вызвать его из блока, вы можете вызвать его из процедуры.   -  person Aleksej    schedule 09.08.2016


Ответы (2)


Вы можете вызвать другую процедуру в другом пакете, используя PackageName.ProcedureName(vcParameters => 'InputParameter1');

Если процедура находится в том же пакете, вы можете сделать это без PackageName, поэтому просто ProcedureName(vcParameters => 'InputParameter1');

person Tenzin    schedule 11.08.2016

Вы вызываете процедуру, просто помещая ее имя и параметры в свой код, например.

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.

person William Robertson    schedule 27.07.2018