2014-02-18 2 views
7

zu Angabe habe ich ein Schema GBO_ARC_SCHEMA, in dem ich einen Tisch TEST_EMP, und ich habe zwei Benutzer sagen USER_A und USER_B genannt genannt.Zugriff auf eine Tabelle ohne die Schemanamen

Zuerst angeschlossen ich USER_A und gebrannt unter Abfrage

select count(*)from TEST_EMP; 

count 
----- 
20 

Danach habe ich als USER_b verbunden und unter Abfrage gefeuert, aber es ist ein Fehler, zu geben, zu sagen, dass die Tabelle oder Sicht nicht verlässt nicht

select count(*)from TEST_EMP; 

Aber wenn ich scma.object name10 verwende, kann ich wie unten

select count(*)from GBO_ARC_SCHEMA.TEST_EMP; 
abfragen

aber gemäß meiner Anforderung möchte ich keinen Schemanamen angeben.

kann mir jemand helfen?

+0

'Ich möchte Schemaname nicht angeben. Dann einfach [ein Synonym erstellen] (http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_7001.htm#SQLRF01401). –

+0

danke, aber wir wollen nicht das Synonym zu erstellen, meine Req ist wie das im übergeben Tabellenname als dynamisch, wenn ich Synonym verwenden wird es nicht generische ri8 .. ?? –

+2

Wenn die Abfrage dynamisch (generiert) ist, fügen Sie das Schema einfach hinzu, während Sie die Abfrage erstellen. – Mat

Antwort

10

Wenn Sie alle Benutzer wollen aus der Tabelle auswählen zu können, ohne mit dem Schemanamen qualifiziert, möchten Sie ein öffentliches Synonym erstellen:

create public synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP; 

Wenn Sie nur user_b wollen wegzuzulassen der Schemaname, möchten Sie einen privates Synonym WITHIN user_b Schema erstellen (das als user_b angemeldet ist)

create synonym TEST_EMP for GBO_ARC_SCHEMA.TEST_EMP; 

Wenn Sie darauf bestehen, nicht Synonyme verwenden, dann, nach der Anmeldung hat ein

alter session set current_schema = GBO_ARC_SCHEMA; 
+0

ja thaq so viele Freunde haben wir irgendwelche anderen Lösungen vermeiden Sequenz .... ?? –

+0

Entschuldigung, aber wo siehst du Sequenzen? –

+0

Thanq so viele Freunde, die ich in Betracht gezogen habe alter session set current_schema = GBO_ARC_SCHEMA; –

-2

Für Postgres Benutzer mit dem gleichen Problem

ALTER ROLE <YOUR_USERNAME> SET search_path TO GBO_ARC_SCHEMA; 
+0

Das ist Oracle, nicht Postgres. –

0

Auf den Serverrollen für die Login Sie verwenden Deaktivieren Sie einfach sysadmin und sereradmin roles. Das sollte es lösen