17,377
社区成员
发帖
与我相关
我的任务
分享
PROCEDURE PROC_CORE_MANAGER
(P_LOTNO VARCHAR2,
P_RESULT OUT VARCHAR2)
IS
V_LOTORG VARCHAR(25);
V_COUNT NUMBER;
V_LOTNO VARCHAR(25);
V_LIKE VARCHAR(15);
v_xxx VARCHAR(20);
BEGIN
SELECT COUNT(1) INTO V_COUNT FROM CORELIST WHERE LOTNO = P_LOTNO;
IF (V_COUNT < 1) THEN
BEGIN
SELECT GLOTORG INTO V_LOTORG FROM GLOTINFO WHERE GLOTNO = P_LOTNO;
EXCEPTION --上面一句出现异常就走,不出现就直接跳走了,不接着执行下面的语句了 ,怎么解决
WHEN NO_DATA_FOUND THEN
BEGIN
V_LOTORG := 'no data found';
END;
IF (V_LOTORG = 'no data found') THEN
BEGIN
--判断是否是伪码,判断方法:把批号的最后两位替换为01
V_LIKE := SUBSTR(P_LOTNO, 1, 8) || '01';
SELECT GLOTORG
INTO V_LOTORG
FROM GLOTINFO
WHERE GLOTNO = V_LIKE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
V_LOTORG := 'no data found';
END;
IF (V_LOTORG = 'no data found') THEN
BEGIN
P_RESULT := -1;
END;
ELSE
BEGIN
SELECT LOTNO
INTO V_LOTNO
FROM CORELIST
WHERE LOTNO IN (SELECT GLOTNO
FROM GLOTINFO
WHERE GLOTORG = V_LOTORG);
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
V_LOTNO := 'no data found';
END;
IF (V_LOTNO = 'no data found') THEN
BEGIN
P_RESULT := -1;
END;
ELSE
BEGIN
P_RESULT := V_LOTNO;
END;
END IF;
END;
END IF;
END;
ELSE
BEGIN
SELECT LOTNO
INTO V_LOTNO
FROM CORELIST
WHERE LOTNO IN
(SELECT GLOTNO FROM GLOTINFO WHERE GLOTORG = V_LOTORG);
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
V_LOTNO := 'no data found';
END;
IF (V_LOTNO = 'no data found') THEN
BEGIN
P_RESULT := -1;
END;
ELSE
BEGIN
UPDATE CORELIST
SET LOTNO = P_LOTNO
WHERE LOTNO = V_LOTNO;
P_RESULT := 2; --更新信息成功
EXCEPTION
WHEN OTHERS THEN
BEGIN
P_RESULT := -2; --数据操作异常
ROLLBACK;
END;
COMMIT;
END;
END IF;
END;
END IF;
END;
ELSE
BEGIN
P_RESULT := 1; --正常记录
COMMIT;
END;
END IF;
END PROC_CORE_MANAGER;
BEGIN
SELECT COUNT(1) INTO V_COUNT FROM CORELIST WHERE LOTNO = P_LOTNO;
IF (V_COUNT < 1) THEN
BEGIN
--这一块用一个begin-end包起来
BEGIN
SELECT GLOTORG INTO V_LOTORG FROM GLOTINFO WHERE GLOTNO = P_LOTNO;
EXCEPTION --上面一句出现异常就走,不出现就直接跳走了,不接着执行下面的语句了 ,怎么解决
WHEN NO_DATA_FOUND THEN
V_LOTORG := 'no data found';
END;
IF (V_LOTORG = 'no data found') THEN