ネストされた例外を使用せずに、この種のロジックを解決する代替手段があるかどうかを知りたいです。これは、整数値を返す関数の一部です。ありがとう。
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 あります。