Oracle: Völliges Neuland

MysterioJN

SQL-Guru
Beiträge
158
Hallo zusammen, ich habe seit heute Zugriff auf eine Oracle Datenbank bekommen und soll mittels dem Program SQuirrel abfragen generieren. Bis dato kannte ich mich nur in der MSSQL-Umgebung aus.

Nun fängt es schon mit einer Fehlermeldung beim banalsten aller Dinge an:

SELECT * FROM Tabelle

Liefer die Fehlermeldung:
Error: ORA-00942: table or view does not exist
SQLState: 42000
ErrorCode: 942

Das ist natürlich schmarn. Ich kann die Tabelle einsehen und hab auch die Berechtigung.
Checkt er nicht die Datenbank? Unter MSSQL sagt man einfach USE datebankname vor dem SELECT. Das scheint in Oracle nicht zu gehen ... ?

Da bekomm ich schon glatt einen dicken Hals bei auf Oracle .... ;)

Wäre lieb, wenn mir jemand kurz aushelfen könnte, was ich hier schon überhaupt falsch machen kann..

Beste Grüße
Marco
 
Zuletzt bearbeitet:
Werbung:
Hmm also mit Select * FROM datenbank.tabelle klappt es.

Aber ich kann doch jetzt nicht in allen Selectstatements des folgenden Beispielselectes überall den Datenbankname davor schreiben ....

Code:
SELECT 

BELEGE.MANDANT,
BELEGE.BELEG,
BELEGE.GJ,
BELEGE.BUCHUNGSDATUM,
BELEGE.BELEGTEXT,
BELEGE.WAEHRUNG,
BELEGE.BELEGBETRAG,
BELPOSKONTIERUNGEN.KONTOTITEL,
SACHKTOGRUNDDATEN.BEZEICHNUNG,
BELPOSAOBJZUO.KOSTENRECHNUNG,
BELPOSAOBJZUO.ABRECHNUNGSOBJEKT,
AOBJHIERARCHIEN.BEZEICHNUNG,
BELPOSAOBJZUO.BETRAG,
POSTEN.POSTEN,
POSTEN.VERWENDUNGSZWECK,
ADRESSEN.NAME1,
ADRESSEN.ORT,
HHELEMENTE.TIEFE1ID,
HHELEMENTE.TIEFE2ID,
HHELEMENTE.TIEFE3ID
FROM BELEGE BELEGE
INNER JOIN BELEGPOSITIONEN BELEGPOSITIONEN ON (BELEGPOSITIONEN.RWBELEG = BELEGE.RWBELEG)
INNER JOIN BELPOSKONTIERUNGEN BELPOSKONTIERUNGEN ON (BELPOSKONTIERUNGEN.RWBELEG = BELEGPOSITIONEN.RWBELEG) AND (BELPOSKONTIERUNGEN.RWBELEGPOSITION = BELEGPOSITIONEN.RWBELEGPOSITION)
LEFT OUTER JOIN BELPOSPOSTENZUO BELPOSPOSTENZUO ON (BELPOSPOSTENZUO.RWBELEG = BELPOSKONTIERUNGEN.RWBELEG) AND (BELPOSPOSTENZUO.RWBELEGPOSITION = BELPOSKONTIERUNGEN.RWBELEGPOSITION) AND (BELPOSPOSTENZUO.SOLL = BELPOSKONTIERUNGEN.SOLL)
LEFT OUTER JOIN POSTEN POSTEN ON (POSTEN.RWPOSTEN = BELPOSPOSTENZUO.RWPOSTEN)
LEFT OUTER JOIN PARTNER PARTNER ON (PARTNER.PARTNER = POSTEN.PARTNER)
LEFT OUTER JOIN NIEDERLASSUNGEN NIEDERLASSUNGEN ON (NIEDERLASSUNGEN.PARTNER = PARTNER.PARTNER)
LEFT OUTER JOIN ADRESSEN ADRESSEN ON (ADRESSEN.PARTNER = NIEDERLASSUNGEN.PARTNER) AND (ADRESSEN.NIEDERLASSUNG = NIEDERLASSUNGEN.NIEDERLASSUNG)
LEFT OUTER JOIN BELPOSAOBJZUO BELPOSAOBJZUO ON (BELPOSAOBJZUO.RWBELEG = BELPOSKONTIERUNGEN.RWBELEG) AND (BELPOSAOBJZUO.RWBELEGPOSITION = BELPOSKONTIERUNGEN.RWBELEGPOSITION) AND (BELPOSAOBJZUO.SOLL = BELPOSKONTIERUNGEN.SOLL)
LEFT OUTER JOIN HHELEMENTE HHELEMENTE ON (HHELEMENTE.HHELEMENTID = BELPOSKONTIERUNGEN.HHELEMENTID) AND (HHELEMENTE.PLANGJ = BELPOSKONTIERUNGEN.GJ) AND (HHELEMENTE.PLANMANDANT = BELPOSKONTIERUNGEN.MANDANT)
LEFT OUTER JOIN AOBJHIERARCHIEN AOBJHIERARCHIEN ON (AOBJHIERARCHIEN.MANDANT = BELPOSAOBJZUO.MANDANT) AND (AOBJHIERARCHIEN.KOSTENRECHNUNG = BELPOSAOBJZUO.KOSTENRECHNUNG) AND (AOBJHIERARCHIEN.ABRECHNUNGSOBJEKT = BELPOSAOBJZUO.ABRECHNUNGSOBJEKT)
INNER JOIN SACHKTOGRUNDDATEN SACHKTOGRUNDDATEN ON (SACHKTOGRUNDDATEN.KONTOTITEL = BELPOSKONTIERUNGEN.KONTOTITEL)
WHERE ( BELEGE.GJ = 2017 )
AND ( BELEGE.BELEG = 100003695 )
AND (( BELPOSAOBJZUO.KOSTENRECHNUNG IS NULL  )
     OR ( BELPOSAOBJZUO.KOSTENRECHNUNG <> 'KoRe_4' ))
AND ( BELEGE.STORNOBELEG = 0 )
AND ( BELEGE.STORNIERT = 0 )


Da muss es doch was einfacheres geben (wie bereits unter MSSQL genannt: USE Datenbankname)
 
Werbung:
Hallo,

entweder man sagt
Code:
alter session set current_schema=dein_schema;
Oder man legt Synonyme an:
Code:
create or replace synonym tabellenname for schema.tabellenname;
Dann kann man sich den alter session zukünftig sparen.

Das kann man auch einfach generieren:
Code:
begin
for i in (select table_name,owner from all_tables where owner=UPPER('dein_schema')) loop
   execute immediate 'create or replace synonym '||i.table_name||' for '||i.owner||'.'||i.table_name;
  end loop;
end;
/

PS: Unter Oracle gibt es genau eine Datenbank, aber verschiedene Schemata (= User).
 
Zurück
Oben