我使用下面的查询将异常保存到我的表
EXCEPTION
WHEN OTHERS THEN
INSERT INTO TEMP_ERR(COLUMN1)
VALUES(SQLCODE);
以上查询提出
“SQL错误:ORA-00984:此处不允许列”
我试过试错,
EXCEPTION
WHEN OTHERS THEN
DECLARE m VARCHAR(255);
m:=SQLCODE;
INSERT INTO TEMP_ERR(COLUMN1)
VALUES(m);
它有效。为什么?有人引导我区别吗?
答案 0 :(得分:6)
文档中对此进行了解释:
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/errors.htm#i3372
请参阅主题:“检索错误代码和错误消息:SQLCODE和SQLERRM”
您不能在SQL语句中直接使用SQLCODE或SQLERRM。 相反,您必须将其值分配给局部变量,然后使用 SQL语句中的变量,如例10-11所示。