Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/03/2006, 07:28
maurimono
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago de Chile
Mensajes: 504
Antigüedad: 20 años, 1 mes
Puntos: 0
Información procedure con problemas Oracle 9i

Hola. mira esta es mi procedure:

create or replace procedure paso_uno (v_dia_mensajeria number, v_ciclo_fact number)
is
Type reg is record(
v_rut cobranza.rut%type,
v_nombre cobranza.nombre%type,
v_cuenta cobranza.cuenta%type,
v_folio cobranza.folio%type,
v_emision cobranza.emision%type,
v_vencimiento cobranza.vencimiento%type,
v_monto cobranza.monto%type,
v_tipo_doc cobranza.tipo_doc%type,
v_usu_clie cobranza.usu_clie%type,
v_nat_jur cobranza.nat_jur%type,
v_fono cobranza.fono%type,
v_celular cobranza.celular%type,
v_correo cobranza.correo%type,
v_forma_pago cobranza.forma_pago%type,
v_ciclo_fact cobranza.ciclo_fact%type,
v_fecha_proc cobranza.fecha_proc%type,
v_dia_mensajeria cobranza.dia_mensajeria%type);
v_cobranza reg;

begin
insert into cobranza (rut,nombre,cuenta,folio,emision,vencimiento, monto,
tipo_doc, usu_clie, nat_jur, fono,
celular, correo, forma_pago, ciclo_fact, fecha_proc, dia_mensajeria)



/* Formatted on 2006/02/06 18:26 (Formatter Plus v4.8.6) */
SELECT /*+ driving_site(e)
use_nl(a,b,c,d,e)
*/

c.LOC as rut ,
c.NAME ||' '||d.ATTRIB_40||' '|| d.ATTRIB_41 as Nombre,
a.CUST_COD as cta_fact,
a.FRA_FISEQ_NUM as folio,
to_char(a.FDOC_DAT,'dd/mm/yyyy') as emisión,
to_char(a.DUE_DAT,'dd/mm/yyyy') as vencim,
a.CNS_LOC_AMT as monto,
a.FRA_FISRL_NUM as tipo_doc,
c.ACCNT_TYPE_CD as Usu_Clie,
c.OU_TYPE_CD as nat_jur,
TRIM(replace(replace(replace(replace(replace(repla ce(f.PH_NUM,'+560'),''),'+56'),' '),'-'),''))as fono,
substr(f.X_CELULAR,4,10) as celular,
f.EMAIL_ADDR as correo,
h.PAY_METHOD_CD as forma_pago,
v_ciclo_fact as ciclo_fact,
to_char(sysdate,'dd/mm/yyyy') as fecha_proceso,
v_dia_mensajeria as dia_mensajeria
into v_cobranza



from
siebel.S_PAY_METHOD@siebel h,
siebel.S_CON_ADDR@siebel f,
siebel.S_INS_BILLACCT@siebel g,
siebel.S_ORG_EXT_X@siebel d,
siebel.S_ORG_EXT@siebel c,
BAS.FDTACREC a


where
a.FRA_FISRL_NUM in ('SBOLE','SBOLA','SFACE','SFACA')
and a.SPINVC_NMR like '%v_ciclo_fact%'
and a.CAN_LOC_AMT = 0
and a.DUE_DAT+v_dia_mensajeria = to_char(sysdate,'dd/mm/yyyy')
and g.X_ACCNT_ID = c.ROW_ID
and g.X_INTEGRATION_ID = trim(a.CUST_COD)
and g.acct_status = 'Alta'
and f.ROW_ID = g.X_ADDRESS_ID
and f.X_TIPO_DIRECCION = 'Facturación'
and f.X_ESTADO_DIRECCION = 'Activa'
and h.BILLACCT_ID = g.ROW_ID
and h.PLAN_NUM = 'Y'
and d.ROW_ID = c.ROW_ID
and a.CNS_LOC_AMT > 0;


EXCEPTION
WHEN NO_DATA_FOUND THEN
v_cobranza := NULL;
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
end;


Me da un error:
PL/SQL: ORA-01744: INTO inadecuada en into v_cobranza.
Este ejemplo lo saque de un manual. lo hice igual y no me funciona.
ademas como defino:



Type reg is record(
v_rut cobranza.rut%type,
v_nombre cobranza.nombre%type,
v_cuenta cobranza.cuenta%type,
v_folio cobranza.folio%type,
v_emision cobranza.emision%type,
v_vencimiento cobranza.vencimiento%type,
v_monto cobranza.monto%type,
v_tipo_doc cobranza.tipo_doc%type,
v_usu_clie cobranza.usu_clie%type,
v_nat_jur cobranza.nat_jur%type,
v_fono cobranza.fono%type,
v_celular cobranza.celular%type,
v_correo cobranza.correo%type,
v_forma_pago cobranza.forma_pago%type,
v_ciclo_fact cobranza.ciclo_fact%type,
v_fecha_proc cobranza.fecha_proc%type,
v_dia_mensajeria cobranza.dia_mensajeria%type);
v_cobranza reg;


sera semejante a:
v_cobranza cobranza.%Rowtype; ?


el asunto es que ese select recupera entre 20.000 y 30.000 registros.

Atte
Mauricio