Gostaria de saber como executo uma package no sql plus de forma que um dos parametros seja do tipo IN/OUT.Por exemplo ,caso os parametros A,B fossem somente IN ,minha package poderia ser executada assim:
exec minhapackage.executa(valor do parametro A,valor do parametro B );
Mas caso haja um terceiro parametro C,que seja o retorno da execução da package e também seja entrada dela,como faço pra executar minha package no SQL Plus por linha de comando?
SQL> VAR
No bind variables declared.
SQL>
SQL>
SQL> VAR A NUMBER
SQL> PRINT
A
---------
SQL> BEGIN
2 SELECT 12345
3 INTO :A
4 FROM DUAL;
5 END;
6 /
PL/SQL procedure successfully completed.
SQL> PRINT
A
---------
12345
SQL>
Mas na segunda resposta ,tu ta só fazendo um select e jogando dentro de uma variavel ,depois manda imprimir o conteudo dessa variavel...mas não enxerguei o que tem haver com o que eu perguntei.
Na primeira resposta ,eu entendi o que tu quis dizer ,mas essa package não é minha,se eu não puder mexer nela ,como se fosse uma "caixa preta" ,eu não tenho permissão pra abrir ela(mexer no codigo) ,como posso executar ela sabendo apenas que todos os parametros dela são IN,mas o ultimo é do tipo IN/OUT?
SQL>
SQL> create procedure thomas ( vnum in number, vnum2 out number) is
2 begin
3 dbms_output.put_line( vnum );
4 vnum2 := vnum + 10; --> pego o valor vindo da variavel IN e somo 10.
5 end;
6 /
Procedure created.
SQL> set serveroutput on
SQL>
SQL> declare
2 yyy number;
3 begin
4 -- Passo 1000 na variavel IN. A procedure soma 10 e retorna em yyy.
5 thomas ( 1000, yyy);
6 dbms_output.put_line ( yyy );
7 end;
8 /
1000
1010
PL/SQL procedure successfully completed.
SQL>
Já sobre as BINDs, o que eu fiz foi o seguinte. Coloquei um SQL retornando algo pra BIND :a apenas pra mostrar que ela recebe algum valor. Você poderia fazer assim:
SQL> VAR
No bind variables declared.
SQL>
SQL>
SQL> VAR A NUMBER
SQL> PRINT
A
---------
SQL> BEGIN
2 minhapackage.executa( 123, 333, :a );
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> PRINT
A
---------
****** --> aqui vai o retorno da sua procedure!!!
SQL>