2012-02-13 8 views
2

uviewとvviewという2つのテーブルを作成しました。ユニオン・クエリーが機能しない場合、ORA-00904エラーが発生する

CREATE TABLE Uview 
( USERID CHAR(6) NOT NULL ENABLE, 
pageID varCHAR2(50) NOT NULL ENABLE, 
VISIT_TIME TIMESTAMP (6) NOT NULL ENABLE, 
view_TIME TIMESTAMP (6) NOT NULL ENABLE, 
fview_TIME TIMESTAMP (6) NOT NULL ENABLE, 
entry varCHAR2(50) NOT NULL ENABLE, 
exit varCHAR2(50) NOT NULL ENABLE, 
PRIMARY KEY (USERID, VISIT_TIME,viewtime) ENABLE) 


CREATE TABLE vview 
( VISITORID CHAR(8) NOT NULL ENABLE, 
    pageID varCHAR2(50) NOT NULL ENABLE, 
VISIT_TIME TIMESTAMP (6) NOT NULL ENABLE, 
view_TIME TIMESTAMP (6) NOT NULL ENABLE, 
fview_TIME TIMESTAMP (6) NOT NULL ENABLE, 
entry varCHAR2(50) NOT NULL ENABLE, 
exit varCHAR2(50) NOT NULL ENABLE, 
PRIMARY KEY (visitorID, VISIT_TIME,view_time) ENABLE) 

ここで、これらの2つのテーブルをユニオンでクエリしたいとします。

select userID,pageID,visit_time,view_time,fview_time,exit,entry 
    from uview 
union 
select visitorid,pageID,visit_time,view_time,fview_time,exit,entry 
    from vview; 

ただし、ORA-00904:「ENTRY」というエラーがあります。これは無効な識別子です。 ORA-00904:「Exit」:無効な識別子の結果も同様です。これは私にとってとても奇妙なようです。何が間違っているか教えてください。ありがとう。

+0

見える..エントリn出口はキーワードですか?ありがとう。 –

答えて

2

Entryは、Oracleの予約語であるhttp://docs.oracle.com/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htmです。あなたは二重引用符でそれをエスケープする必要があります:

SELECT .... , "entry" 
FROM uview 
etc... 
+0

ありがとう。しかし、今私は入力しました ユーザーID、pageID、visit_time、view_time、fview_time、 'entry'を入力しました。 結果は、ORA-00911:無効な文字を示しています.... – jannyeu

+0

ああ、doh。右オラクル。 mysqlのバッククック。オラクルは二重引用符を求めています:http://stackoverflow.com/questions/1162381/how-do-i-escape-a-reserved-word-in-oracle答えを修正します。 –

+0

Oracle 11gを使用しています。そのようなエラーには何か関係がありますか? また、退出はどうですか?クエリにexitを含めるだけで、ORA-00904も表示されるので、 – jannyeu

関連する問題