oracle,sql代码,这里不允许列

She*_*kaj 5 oracle oracle11g

我使用下面的Query来保存我的表的异常

EXCEPTION
  WHEN OTHERS THEN
  INSERT INTO TEMP_ERR(COLUMN1)
  VALUES(SQLCODE);
Run Code Online (Sandbox Code Playgroud)

上面的查询扔了

"SQL错误:ORA-00984:此处不允许列"

我试过试错了

EXCEPTION

  WHEN OTHERS THEN
  DECLARE m VARCHAR(255);
   m:=SQLCODE;
  INSERT INTO TEMP_ERR(COLUMN1)
  VALUES(m);
Run Code Online (Sandbox Code Playgroud)

它起作用了.为什么?有人引导我区别吗?

kro*_*lko 7

这在文档中解释:
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/errors.htm#i3372
查看主题:"检索错误代码和错误消息:SQLCODE和SQLERRM"

您不能在SQL语句中直接使用SQLCODE或SQLERRM.相反,您必须将它们的值赋给局部变量,然后使用SQL语句中的变量,如例10-11所示.