3

私はOracleを初めて使用し、次の問題が発生しました。テーブルからクエリを実行するために、スキーマ名とテーブル名を二重引用符で囲む必要があるのはなぜですか?変更する設定はありますか?

ありがとう。

SQL> conn sys/ogrish@orcl as sysdba
Connected.
SQL> show user
USER is "SYS"
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> select * from m.album;
select * from m.album
                *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from M.Album where rownum < 2;
select * from M.Album where rownum < 2;
              *
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> select * from "M"."Album" where rownum < 2;

   AlbumId Title
---------- ----------------------------------------------------------------------
         1 For Those About To Rock We Salute You

SQL> conn m/m@orcl
Connected.
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
Album
Artist
Customer
Employee
Genre
Invoice
InvoiceLine
MediaType
Playlist
PlaylistTrack
sysdiagrams

TABLE_NAME
------------------------------
Track

12 rows selected.

SQL> select * from album where rownum < 2;
select * from album where rownum < 2;
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from Album where rownum < 2;
select * from Album where rownum < 2
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from m.album where rownum < 2;
select * from m.album where rownum < 2
                *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from M.Album where rownum < 2;
select * from M.Album where rownum < 2
                *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from "M"."Album" where rownum < 2;

   AlbumId Title
---------- ----------------------------------------------------------------------
         1 For Those About To Rock We Salute You

SQL> select * from "Album" where rownum < 2;

   AlbumId Title
---------- ----------------------------------------------------------------------
         1 For Those About To Rock We Salute You

SQL>
4

2 に答える 2

5

スキーマ名に二重引用符を追加する必要はありませんが、引用符を使用して作成したため(大文字と小文字が区別されます)、テーブル名に追加する必要があります。

select * from M."Album"

も動作するはずです。それ以外の場合、M.AlbumはデフォルトでM.ALBUMに変換され、テーブルALBUMは存在しません。

于 2012-08-17T06:58:22.180 に答える
0

シノニムを使用すると、スキーマ名を事前に固定する必要がなくなります。

于 2012-08-17T08:01:51.627 に答える