我想知道是否有任何替代方法可以解决这种逻辑,而不使用嵌套异常。这是返回整数值的函数的一部分。谢谢。
IF PNOMTARIFA = 'DEPOSITO'
THEN
BEGIN
SELECT CL.ID_TIPO_CONT_LINEA,
CL.NOMBRE_TIPO_CONTENEDOR,
TC.DEPOSITO ,
L.NOMBRE
INTO idcontlinea,
tcontenedor,
deposito,
vlinea
FROM TIPO_CONT TE,
TIPO_CONT_LINEA CL,
TARIFAS_DEPOSITO TC,
LINEAS L
WHERE TE.ID_TIPO_CONT = CL.ID_TIPO_CONTENEDOR
AND CL.ID_TIPO_CONT_LINEA = TC.ID_TIPO_CONT_LINEA
AND CL.LINEA = L.LINEA
AND TE.ID_TIPO_CONT = PTIPO_CONT
AND CL.LINEA = PLINEA
AND TC.NIT = PNITCLIENTE
AND TC.BL = PNUMBL
AND TC.VIGENCIA_DEPOSITO >= trunc(SYSDATE);
EXCEPTION
WHEN OTHERS THEN
BEGIN
SELECT CL.ID_TIPO_CONT_LINEA,
CL.NOMBRE_TIPO_CONTENEDOR,
TC.DEPOSITO ,
L.NOMBRE
INTO idcontlinea,
tcontenedor,
deposito,
vlinea
FROM TIPO_CONT TE,
TIPO_CONT_LINEA CL,
TARIFAS_DEPOSITO TC,
LINEAS L
WHERE TE.ID_TIPO_CONT = CL.ID_TIPO_CONTENEDOR
AND CL.ID_TIPO_CONT_LINEA = TC.ID_TIPO_CONT_LINEA
AND CL.LINEA = L.LINEA
AND TE.ID_TIPO_CONT = PTIPO_CONT
AND CL.LINEA = PLINEA
AND TC.NIT = PNITCLIENTE
AND TC.PUERTO_CARGUE = PPTOCARGUE
AND TC.PUERTO_DESCARGUE = PPTODESCARGUE
AND PCLIENTEEXT LIKE '%'||TC.CLIENTE_EXT||'%'
AND TC.BL IS NULL
AND TC.VIGENCIA_DEPOSITO >= trunc(SYSDATE);
EXCEPTION
WHEN OTHERS THEN
BEGIN
SELECT CL.ID_TIPO_CONT_LINEA,
CL.NOMBRE_TIPO_CONTENEDOR,
TC.DEPOSITO ,
L.NOMBRE
INTO idcontlinea,
tcontenedor,
deposito,
vlinea
FROM TIPO_CONT TE,
TIPO_CONT_LINEA CL,
TARIFAS_DEPOSITO TC,
LINEAS L
WHERE TE.ID_TIPO_CONT = CL.ID_TIPO_CONTENEDOR
AND CL.ID_TIPO_CONT_LINEA = TC.ID_TIPO_CONT_LINEA
AND CL.LINEA = L.LINEA
AND TE.ID_TIPO_CONT = PTIPO_CONT
AND CL.LINEA = PLINEA
AND TC.NIT = PNITCLIENTE
AND TC.PUERTO_CARGUE = PPTOCARGUE
AND TC.PUERTO_DESCARGUE = PPTODESCARGUE
AND TC.CLIENTE_EXT IS NULL
AND TC.BL IS NULL
AND TC.VIGENCIA_DEPOSITO >= trunc(SYSDATE);
EXCEPTION WHEN OTHERS THEN
...嵌套了近 30 个开始异常。