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

时间:2016-02-21 17:08:49

标签: oracle oracle11g

我使用下面的查询将异常保存到我的表

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);

它有效。为什么?有人引导我区别吗?

1 个答案:

答案 0 :(得分:6)

文档中对此进行了解释:
https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/errors.htm#i3372
请参阅主题:“检索错误代码和错误消息:SQLCODE和SQLERRM”

  

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