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