Olá Pessoal,

Existe uma forma de usar o execute immediate em functions que possuem um dos
parametros out ? Sempre usei mais ou menos assim:

set feedback <http://www.adp-gmbh.ch/ora/sqlplus/feedback.html> off
set linesize <http://www.adp-gmbh.ch/ora/sqlplus/linesize.html> 120
set pagesize <http://www.adp-gmbh.ch/ora/sqlplus/pagesize.html> 0

create or replace function *count_in_table*
  (attr in varchar2, attrval in varchar2, tbl in varchar2)
  return number
is
  cnt number;
begin
  execute immediate 'select count(1) from ' || tbl || ' where ' ||
attr || ' = :a' into cnt using attrval;

  return cnt;
end;
/

Mas onde trabalho existem algumas funções como a que segue abaixo:

SQL> desc pFnConta.ImportaBcoAgCta
Parameter                 Type         Mode Default?
------------------------- ------------ ---- --------
(RESULT)                  BOOLEAN
PIDPROPRIETARIOCONTA      NUMBER(7)    IN
PAPELIDOPROPRIETARIOCONTA VARCHAR2     IN
PCPFCGCPROPRIETARIOCONTA  VARCHAR2     IN
PCODTIPOCONTA             VARCHAR2     IN
PCODCONTACONTABIL         VARCHAR2     IN
PSALDOATUAL               NUMBER(15,2) IN
PCODINTEGSDFINANCIAL      VARCHAR2     IN
PNOMECONTACAIXA           VARCHAR2     IN
PNUMBACEN                 VARCHAR2     IN
PNOMEBANCO                VARCHAR2     IN
PNUMAGENCIA               VARCHAR2     IN
PNOMEAGENCIA              VARCHAR2     IN
PNUMCC                    VARCHAR2     IN
PINDESPECIAL              VARCHAR2     IN
PINDCPMF                  VARCHAR2     IN
PINDPOUPANCA              VARCHAR2     IN
PVLRLIMITE                NUMBER(15,2) IN
PDESCRICAO                VARCHAR2     IN
PNUMDIAS                  NUMBER(3)    IN
PNUMTIPOOPER              NUMBER(4)    IN
PINDATIVA                 VARCHAR2     IN   Y
PINDCONTACONJUNTA         VARCHAR2     IN   Y
PIDCTA                    NUMBER(8)    OUT
PMSGERRO                  VARCHAR2     OUT

Existe uma forma de usar o Execute Immediate dessa rotina ou a melhor forma
é transforma-la em procedure ?

[]'s

Cesar


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

Responder a