“ora-06512 错误” 储存过程DEBUG状态错误不发生,更新表调用触发器报错表C_COMMONORDER2的触发器TGPATORDERSTATUS2 IF INSERTING OR UPDATING THEN
CRPATORDERSTATUS(NEW.ORDERSTATUS1);
END IF;存储过程 CRPATORDERSTATUS
CREATE OR REPLACE PROCEDURE ORDER97.CRPATORDERSTATUS(
CORDERSTATUS IN C_COMMONORDER2.ORDERSTATUS1%TYPE
)is
CURSOR MR IS
SELECT ORDERSTATUS1
FROM C_COMMONORDER2
WHERE PATIENTNO=CPATIENTNO ;
IF CORDERSTATUS = 'Z' THEN
FOR LCMR IN MR LOOP
IF LCMR.ORDERSTATUS1<>'Z' then
lsKIND:=LCMR.ORDERSTATUS1;
COMMIT;
EXIT;
END IF;
END LOOP;
END IF;
以上只是储存过程认为跟错误相关的部分
更新表的时候,只要ORDERSTATUS1<>'z',触发器不报错,
但是更新表的COMMONORDER2.ORDERSTATUS1='Z'字段 和存储过程里面IF CORDERSTATUS = 'Z' THEN 一致就报错了请教什么原因?
CRPATORDERSTATUS(NEW.ORDERSTATUS1);
END IF;存储过程 CRPATORDERSTATUS
CREATE OR REPLACE PROCEDURE ORDER97.CRPATORDERSTATUS(
CORDERSTATUS IN C_COMMONORDER2.ORDERSTATUS1%TYPE
)is
CURSOR MR IS
SELECT ORDERSTATUS1
FROM C_COMMONORDER2
WHERE PATIENTNO=CPATIENTNO ;
IF CORDERSTATUS = 'Z' THEN
FOR LCMR IN MR LOOP
IF LCMR.ORDERSTATUS1<>'Z' then
lsKIND:=LCMR.ORDERSTATUS1;
COMMIT;
EXIT;
END IF;
END LOOP;
END IF;
以上只是储存过程认为跟错误相关的部分
更新表的时候,只要ORDERSTATUS1<>'z',触发器不报错,
但是更新表的COMMONORDER2.ORDERSTATUS1='Z'字段 和存储过程里面IF CORDERSTATUS = 'Z' THEN 一致就报错了请教什么原因?
lsKIND:=LCMR.ORDERSTATUS1这是什么意思
lsKIND是变量吗,怎么没有定义
如果是字段名,不能这么写
Cause: Backtrace message as the stack is unwound by unhandled exceptions.
Action: Fix the problem causing the exception or write an exception handler for this condition. Or you may need to contact your application administrator or database administrator. 检查下lsKIND字段的数据类型
还有长度
那个commit没用吧
报错指的位置是定义 CURSOR MR IS 和 FOR LCMR IN MR LOOP 那里。奇怪的是,只要更新表的COMMONORDER2.ORDERSTATUS1不是'Z' ,触发器是不出错的