5

system_privilege_map から選択した名前によると、システムは付与されています:

SELECT ANY TABLE

...その他多数 * ANY TABLES.

地味に走る

select * from the_table;
select * from the_table;

...与えられた応答をネットします:

1 行目のエラー: ORA-00942: テーブルまたはビューが存在しません

そのユーザーとしてログインし、同じコマンドを問題なく実行できます。

私は、一般ユーザーのDBテーブルに対してクエリ(この場合は選択)を実行できるはずであるという前提で実行しています。私の仮定は正しいですか?もしそうなら、どうすればいいですか?

4

3 に答える 3

9

前の回答で述べたように、オブジェクト名の前にスキーマ名を付けることができます。

SELECT * FROM schema_name.the_table;

または、同義語 (プライベートまたはパブリック) を使用できます。

CREATE (PUBLIC) SYNONYM the_table FOR schema_name.the_table;

または、alter session コマンドを発行して、デフォルトのスキーマを必要なものに設定することもできます。

ALTER SESSION SET current_schema=schema_name;

これは単にデフォルトのスキーマを設定するだけであり、すべての (修飾されていない) オブジェクト名の前にschema_name. オブジェクトに別のスキーマ名のプレフィックスを付けて、別のスキーマからオブジェクトにアクセスすることもできます。を使用SET current_schemaしても権限には影響しません。設定したスキーマではなく、ログインしたユーザーの権限が引き続き保持されます。

于 2008-10-24T13:33:38.743 に答える
7

the_table がユーザー「some_user」によって所有されている場合:

select * from some_user.the_table;
于 2008-09-23T17:01:33.337 に答える
4

あなたがする必要があります:

SELECT * FROM schema_name.the_table;

またはSYNONYMを使用してください...

CREATE SYNONYM the_table FOR schema_name.the_table;
于 2008-09-23T17:01:40.573 に答える