Konvertierung SQL-Script von MSSQL auf SQLPLUS (Oracle)
Ich habe ein SQL-Script welches problemlos auf einem MSSQL 2008er Server läuft, dieses Skript muss ich nun auf einer Oracle-DB mit SQLPLUS zum laufen bekommen, nur weiß ich leider nicht wie!
Hallo Zusammen,
ich habe ein Skript welches unter einem MSSQL 2008 Server wunderbar läuft. Das Skript ist selbstgeschrieben, die Funktion zu erläutern würde wirklich sehr lange dauern und den Rahmen sprengen. Naja, aber wie gesagt es funktioniert ja.
Nun mein Problem, ich muss dieses Skript nun unter Oracle via SQLPLUS zum laufen bekommen, das gestaltet sich als recht schwierig. Ich bin ein absoluter Neuling was SQL angeht und bin eigentlich froh wenn ein Skript mal funktioniert.
Nun meine Frage: Könnt ihr mir bitte helfen und erklären wie ich das u.s. Skript unter SQLPLUS zum laufen bekomme und wo meine Fehler sind bzw. warum, was falsch ist? Schließlich will ich ja auch lernen
Erstmal hier mein SQL-Skript weitestgehend an SQLPLUS angepasst:
Im SQLPLUS bekomme ich jetzt folgende Meldung:
Ich weiß wirklich nicht weiter,...
Wäre super wenn ihr mit beim "Übersetzen" helfen könntet!
Liebe Grüße,
Julian
Hallo Zusammen,
ich habe ein Skript welches unter einem MSSQL 2008 Server wunderbar läuft. Das Skript ist selbstgeschrieben, die Funktion zu erläutern würde wirklich sehr lange dauern und den Rahmen sprengen. Naja, aber wie gesagt es funktioniert ja.
Nun mein Problem, ich muss dieses Skript nun unter Oracle via SQLPLUS zum laufen bekommen, das gestaltet sich als recht schwierig. Ich bin ein absoluter Neuling was SQL angeht und bin eigentlich froh wenn ein Skript mal funktioniert.
Nun meine Frage: Könnt ihr mir bitte helfen und erklären wie ich das u.s. Skript unter SQLPLUS zum laufen bekomme und wo meine Fehler sind bzw. warum, was falsch ist? Schließlich will ich ja auch lernen
Erstmal hier mein SQL-Skript weitestgehend an SQLPLUS angepasst:
SELECT TO_CHAR(DATE,'YYYY-MM-DD') AS Datum,
TO_CHAR(RUN,'HH24:MI:SS ') AS Lauf,
NAME AS Läufer,
DESCRIPTION AS Beschreibung
FROM INFO RIGHT OUTER JOIN
H_PRO RIGHT OUTER JOIN
T_PRO RIGHT OUTER JOIN
SCHEDULE RIGHT OUTER JOIN
OBJECT ON T_PRO.UID = OBJECT.UID ON
SCHEDULE.KEY = T_PRO.KEY ON H_PRO.KEY = SCHEDULE.KEY
AND H_PRO.DATE = SCHEDULE.DATE
AND H_PRO.S_KEY = T_PRO.S_KEY ON INFO.JEY = H_PRO.JEY
WHERE TO_CHAR(DATE,'MM')='11'
AND TO_CHAR(DATE,'YYYY')='2009'
AND OBJECT.UID IN (SELECT UID FROM OBJECT_LIST WHERE TYPE = 'USER')
ORDER BY INFO.DATE;
Im SQLPLUS bekomme ich jetzt folgende Meldung:
OBJECT ON T_PRO.UID = OBJECT.UID ON
*
FEHLER in Zeile 10:
ORA-00904: "T_PRO"."UID": ungültiger Bezeichner
Wäre super wenn ihr mit beim "Übersetzen" helfen könntet!
Liebe Grüße,
Julian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 130032
Url: https://administrator.de/forum/konvertierung-sql-script-von-mssql-auf-sqlplus-oracle-130032.html
Ausgedruckt am: 18.04.2025 um 07:04 Uhr
3 Kommentare
Neuester Kommentar

Hallo,
ich würde den Teil mit den ganzen INNER JOINS entweder mit Klammern versehen (t1 INNER JOIN (t2 INNER JOIN on ...) on ...) oder umbauen auf t1 INNER JOIN t2 on ... INNER JOIN t3 on ... , so sieht mir das irgendwie "seltsam" aus, was aber nicht ausschließen soll, daß es doch auch so richtig ist
ich würde den Teil mit den ganzen INNER JOINS entweder mit Klammern versehen (t1 INNER JOIN (t2 INNER JOIN on ...) on ...) oder umbauen auf t1 INNER JOIN t2 on ... INNER JOIN t3 on ... , so sieht mir das irgendwie "seltsam" aus, was aber nicht ausschließen soll, daß es doch auch so richtig ist
Moin JulianB,
ich würde zumindest zwei Umformulierungen vornehmen.
1) insbesondere das Feld DATE kommt in mehreren Tabellen (INFO, SCHEDULE und H_PRO) vor, aber auch die anderen Felder, die in der SELECT-Feldliste und im WHERE angesprochen werden, sollten eindeutig mit Präfix angesprochen werden.
2) wenn du doch ohnehin ausschließlich INNER JOINs verwendest, dann schreibe es doch auch lesbar
Bei allem,. wo jetzt ein ?? als Präfix steht, sinnvollerweise den richtigen Buchstaben einsetzen.
Grüße
Biber
ich würde zumindest zwei Umformulierungen vornehmen.
1) insbesondere das Feld DATE kommt in mehreren Tabellen (INFO, SCHEDULE und H_PRO) vor, aber auch die anderen Felder, die in der SELECT-Feldliste und im WHERE angesprochen werden, sollten eindeutig mit Präfix angesprochen werden.
2) wenn du doch ohnehin ausschließlich INNER JOINs verwendest, dann schreibe es doch auch lesbar
SELECT TO_CHAR(??.DATE,'YYYY-MM-DD') AS Datum,
TO_CHAR(??.RUN,'HH24:MI:SS ') AS Lauf,
??.NAME AS Läufer,
??. DESCRIPTION AS Beschreibung
FROM INFO i, H_PRO h, T_PRO t, SCHEDULE s, OBJECT o
WHERE t.UID = o.UID
AND s.KEY = t.KEY
AND h.KEY = s.KEY AND h.DATE = s.DATE
AND h.S_KEY = t.S_KEY
AND i.JEY = h.JEY
AND TO_CHAR(??.DATE,'MM')='11'
AND TO_CHAR(??.DATE,'YYYY')='2009'
AND o.UID IN (SELECT UID FROM OBJECT_LIST WHERE TYPE = 'USER')
ORDER BY i.DATE;
Bei allem,. wo jetzt ein ?? als Präfix steht, sinnvollerweise den richtigen Buchstaben einsetzen.
Grüße
Biber