我想知道是否有其他方法来解决这种逻辑,而不使用嵌套异常。这是返回整数值的函数的一部分。谢谢,
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
...嵌套的begin异常几乎有30个。
发布于 2013-09-13 10:31:14
IMHO,这种类型的代码很难调试和运行。
如果我是对的,代码是:
我建议:
希望这能有所帮助。
https://stackoverflow.com/questions/18792646
复制相似问题