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

标签 oracle oracle11g

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

EXCEPTION
  WHEN OTHERS THEN
  INSERT INTO TEMP_ERR(COLUMN1)
  VALUES(SQLCODE);

上面的查询抛出

"SQL Error: ORA-00984: column not allowed here"



在试错的基础上我试过,
EXCEPTION

  WHEN OTHERS THEN
  DECLARE m VARCHAR(255);
   m:=SQLCODE;
  INSERT INTO TEMP_ERR(COLUMN1)
  VALUES(m);

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

最佳答案

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

You cannot use SQLCODE or SQLERRM directly in a SQL statement. Instead, you must assign their values to local variables, then use the variables in the SQL statement, as shown in Example 10-11.

关于oracle,sql代码,这里不允许列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539139/

相关文章:

sql - 从球员列表开始生成比赛列表

sql - ORA-00600 运行 ALTER 命令时?

sql - Oracle View 选择和除以零的问题

sql - ORA-01843 : not a valid month exception when running as report on maximo

python - 数据库错误 : ORA-00911: invalid character

sql - 删除重复的 Oracle xmlagg 列表

ruby OCI8 初始化缓慢

oracle - DBMS_APPLICATION_INFO.SET_CLIENT_INFO 不起作用

sql - SQL 中日志记录表的适当查询和索引

asp.net - Oracle 10 和 Oracle 11 客户端共存