【发布时间】:2021-06-28 02:56:43
【问题描述】:
我的程序的输出字符串出现 pls-00103 错误。
在字段 p_primeravalidacion
PROCEDURE ER_validacion_titulares (p_id_titularidad IN NUMBER, p_primeravalidacion OUT VARCHAR2(1)) 是
在第二个过程中,在 varchar 字段中
PROCEDURE ER_validacion_simulacion (p_id_titularidad IN NUMBER, p_familia IN VARCHAR2(2), p_importe_producto IN NUMBER, p_id_simulacion IN NUMBER, p_id_rating IN NUMBER, p_rating_cliente IN NUMBER, > p_motivo OUT VARCHAR2(200), p_cliente_simulacion OUT NUMBER, p_cif 输出 VARCHAR2(10), p_razon_social 输出 VARCHAR2(10), p_producto_simulacion OUT VARCHAR2(2), p_importe_simulacion OUT NUMBER, p_fecha_simulacion OUT NUMBER, p_raroc_primer_anyo OUT NUMBER, p_raroc_anualizado OUT NUMBER, p_rating OUT NUMBER, p_indicador_raroc OUT NUMBER ) 是
create or replace package API_VALIDACION is
procedure ER_validacion_titulares;
procedure ER_validacion_simulacion;
end;
/
create or replace package body API_VALIDACION is
PROCEDURE ER_validacion_titulares (p_id_titularidad IN NUMBER,
p_primeravalidacion OUT VARCHAR2(1)) IS
cuenta NUMBER := 0;
BEGIN
select count(*)
INTO CUENTA
FROM DCRISK.RAROC_PERSONAS_BCORP where id_titularidad = p_id_titularidad and calc_raroc = 'S';
if(cuenta > 0) then
p_primeravalidacion := 'S';
else
p_primeravalidacion := 'N';
end if;
END;
PROCEDURE ER_validacion_simulacion (p_id_titularidad IN NUMBER,
p_familia IN VARCHAR2(2),
p_importe_producto IN NUMBER,
p_id_simulacion IN NUMBER,
p_id_rating IN NUMBER,
p_rating_cliente IN NUMBER,
p_motivo OUT VARCHAR2(200),
p_cliente_simulacion OUT NUMBER,
p_cif OUT VARCHAR2(10),
p_razon_social OUT VARCHAR2(10),
p_producto_simulacion OUT VARCHAR2(2),
p_importe_simulacion OUT NUMBER,
p_fecha_simulacion OUT NUMBER,
p_raroc_primer_anyo OUT NUMBER,
p_raroc_anualizado OUT NUMBER,
p_rating OUT NUMBER,
p_indicador_raroc OUT NUMBER ) IS
simulacion_no_existe EXCEPTION;
titular_no_vinculado EXCEPTION;
validacionSimulacion BOOLEAN := false;
validacionTitularidad BOOLEAN := false;
grupo VARCHAR2(20);
vAux NUMBER := 0;
vTitularidad NUMBER := 0;
grupo_mayor_exposicion VARCHAR2(20);
exposicion NUMBER := 0;
total NUMBER := 0;
exposicion_aux NUMBER := 0;
CURSOR grupos IS
select distinct o1 as grupo
from bdd_simroe.T_VROE_INF_POSICIONES_GRUPO
where o2 IN (
SELECT IDEPER
FROM BDD_SIMROE.TROE_SIMUL_CLIENTES
WHERE ID_SIMULACION = p_id_simulacion AND ID_TITULARIDAD = p_id_titularidad);
BEGIN
--Validacion simulacion existe
select count(*) into vAux
from bdd_simroe.troe_simulaciones
where id_simulacion = p_id_simulacion;
if (vAux < 1) then
RAISE simulacion_no_existe;
end if;
--Titular no vinculado a titularidad
select ID_TITULARIDAD into vTitularidad
from dcrisk.raroc_personas_bcorp
where id_numpersona IN (
select id_persona
from bdd_simroe.troe_simulaciones
where id_Simulacion = p_id_simulacion);
if ( vTitularidad != p_id_titularidad) then
RAISE titular_no_vinculado;
end if;
--Calculo campos salida
--
select ID_NUMPERSONA,
IDEPER,
NOMBRE,
RAT_GBL
INTO
p_cliente_simulacion,
p_cif,
p_razon_social,
p_rating
from bdd_simroe.TROE_SIMUL_CLIENTES
where id_simulacion = p_id_simulacion;
select
ID_PRODUCTO,
SALDO_MEDIO,
FECHA_ALTA,
RAROC_PRIMER_ANYO,
RAROC_ANUALIZADO
into
p_producto_simulacion,
p_importe_producto,
p_fecha_simulacion,
p_raroc_primer_anyo,
p_raroc_anualizado
from bdd_simroe.TROE_SIMULACIONES
where id_simulacion = p_id_simulacion;
SELECT P.RAROC_OBJ into p_indicador_raroc
FROM BDD_SIMROE.PARAMETROS_APP P
WHERE P.ID_PERFIL = 1;
FOR rec IN grupos
LOOP
select EXPOSICION INTO exposicion from table(bdd_simroe.API_INFORMES.informe_cart_y_sim_sit_irreg('es','J862312',rec.grupo,'P','0')) WHERE CONCEPTO = 'TOTAL CARTERA';
if (exposicion > exposicion_aux) then
grupo_mayor_exposicion := rec.grupo;
exposicion_aux := exposicion;
end if;
-- DBMS_OUTPUT.put_line('grupo: ' || rec.grupo || ' EXPOSICION: ' || exposicion || ' Grupo mayor expo: ' || grupo_mayor_exposicion || ' Expo aux: ' || exposicion_aux);
END LOOP;
select RAROC INTO total from table(bdd_simroe.API_INFORMES.informe_cart_y_sim_sit_irreg('es','J862312',grupo_mayor_exposicion,'P','0')) WHERE CONCEPTO = 'TOTAL CARTERA';
-- DBMS_OUTPUT.put_line('Total RAROC cliente: ' || total);
EXCEPTION
WHEN simulacion_no_existe THEN
p_motivo := "El número de simulación informado no existe";
WHEN titular_no_vinculado THEN
p_motivo := "El titular de la simulación no coincide con ninguno de los titulares del ER";
END;
end;
【问题讨论】: