Olá Pessoal,

Estou com uma dúvida em executar um Sql dinamico com uma function.

Tenho a seguinte function:

sTsVerificaSaldoConta
Parameter   Type       Mode   Default?
----------- ---------- ------ --------
(RESULT)    BOOLEAN
PNUMAGENCIA NUMBER(4)  IN
PNUMCC      NUMBER(12) IN
PDATAREF    DATE       IN
PVALOR      NUMBER     IN OUT
PHISTORICO  NUMBER(4)  IN
PTIPOSALDO  VARCHAR2   IN

Estou tentando executar da seguinte forma:

set serveroutput on

declare
  vSql varchar2(500);
  vRetorno boolean;
  vValor number;
begin
   vValor := 1500;
   vSql := 'select sTsVerificaSaldoConta(:NumAgencia, :NumCC, :DataRef,
:Valor, :Historico, :TipoSaldo) from dual';
   execute immediate vSql into vRetorno using 1, 19,
to_date('01/08/2008','dd/mm/yyyy'), vValor, 3352, 'C';
   if vRetorno then
     dbms_output.put_line ( 'Verdadeiro' );
   end if;
end;
/

Quando executo da forma acima acontece o seguinte erro:

ORA-06572: Function STSVERIFICASALDOCONTA has out arguments
ORA-06512: at line 8

Agora quando executo da maneira abaixo:

set serveroutput on

declare
  vSql varchar2(500);
  vRetorno boolean;
  vValor number;
begin
   vValor := 1500;
   vSql := 'select sTsVerificaSaldoConta(:NumAgencia, :NumCC, :DataRef,
:Valor, :Historico, :TipoSaldo) from dual';
   execute immediate vSql into vRetorno using 1, 19,
to_date('01/08/2008','dd/mm/yyyy'), in out vValor, 3352, 'C';
   if vRetorno then
     dbms_output.put_line ( 'Verdadeiro' );
   end if;
end;
/

Dá o seguinte erro:

ORA-06550: line 8, column 90:
PLS-00254: OUT and IN/OUT modes cannot be used in this context
ORA-06550: line 8, column 4:
PL/SQL: Statement ignored

Gostaria de saber qual a forma correta de executar esse procedimento e o
motivo do erro.

[]'s
Cesar


[As partes desta mensagem que não continham texto foram removidas]

Responder a