ORacle笔记(二)


2 观看次数
207 字数
0 评论

ORA-00904/ORA-00942异常

SELECT
    * 
FROM
    TF_ECP_ORDER_PRE_ACCEPTED 
ORDER BY
    id

这句SQL看着是完全OK的,但是报出了ORA-00904异常.

检查发现建表语句中的列名使用了双引号,SO

SELECT
    * 
FROM
    TF_ECP_ORDER_PRE_ACCEPTED 
ORDER BY
    "id"

这样就OK了.

究其原因:

Oracle数据库中各种对象(包括表,列,索引等)默认不区分大小写,在数据字典中一律用大写。假如用户在建表(包括外部表)时,将列名/表名用双引号括起,这些都成为大小写区分的数据库对象。这时select 时需要严格按照建表时的大小写才能成功,否则返回ORA-000904或ORA-00942错误。

某些软件可以帮助用户自动产生Create table语句,这时需要将双引号去掉。否则会产生上述错误。

建表语句中也不建议使用双引号建列,这样的列是不区分大小写的.

评论区

还没有人评论

添加新评论