AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DB-Funktionen von MSSQL in Oracle nachbauen

DB-Funktionen von MSSQL in Oracle nachbauen

Ein Thema von Jumpy · begonnen am 15. Mai 2020 · letzter Beitrag vom 20. Mai 2020
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#1

AW: DB-Funktionen von MSSQL in Oracle nachbauen

  Alt 19. Mai 2020, 14:33
Nein, prinzipiell bist Du auf dem richtigen Dampfer, aber:
Zitat von Jumpy:
Der Kunde setzt nun aber zu Auswertungs-Zwecken tausende (keine Übertreibung!) selbstgebastelte SQL-Statements ein und in diesen finden sich dann auch klassische SQL-Funktionen von MSSQL, ich sag mal als Beispiel die Funktion ISNULL.
und
Zitat von Jumpy:
Wir möchten jetzt vermeiden tausende SQL-Statements anzupacken und umschreiben zu müssen
Und es geht halt momentan darum, ob es möglich ist, den durchaus möglichen, aber nicht unerheblichen, manuellen Aufwand zu reduzieren.

Es wird also ein Weg gesucht, der das
Zitat von p80286:
oder die neu erstellte Abfrage muß dann nochmal nachbereitet werden, was auch für Modifikationen gelten würde.
möglichst verhindert oder zumindest den Umfang wesentlích verkleinert.

Sprich: Kommen wir irgendwie mit vertretbarem Aufwand vom ansonsten bestehenden "Mengenproblem" weg?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: DB-Funktionen von MSSQL in Oracle nachbauen

  Alt 19. Mai 2020, 15:04
Sprich: Kommen wir irgendwie mit vertretbarem Aufwand vom ansonsten bestehenden "Mengenproblem" weg?
Genau das ist was ich erreichen will.

Klar kann ich alle SQL-Statements des Kunden updaten und darin ISNULL( durch NVL( ersetzen, da die Syntax beider Funktionen ansonsten recht gleich ist und schon hab ich ein Problem gelöst, wenn man mal hofft das ISNULL( nicht aus irgendeinem Grund irgendwo als String steht oder so.

Aber bei Funktionen mit komplett anderer Syntax sehe ich als Lösung derzeit nur, die Funktion nachzubauen:

DateAdd([year/month/day],anzahl,Datum1) kann man nicht sinnvoll durch irgendein update via SQL-Statement durch was anderes ersetzen, vor allem, da das ja beliebig komplex werden kann und man da schon halb auf dem Weg zum Parser-Bau ist.

Da ist es doch einfacher sich eine Databasae Function DateAdd selber zu bauen und da wird es bei uns wohl drauf hinauslaufen, weil im Netzt da nichts fertiges zu finden ist.
Ralph
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#3

AW: DB-Funktionen von MSSQL in Oracle nachbauen

  Alt 19. Mai 2020, 15:41
Daher auch mein Vorschlag, erstmal die SQLs in 'ner Schleife durchprobieren und die Fehlermeldungen sammeln.

Dann kann man schauen, was am Häufigsten vorkommt.

Lautet die Meldung halt dahingehend, dass IsNull nicht existiert, kann man schonmal hergehen, in dem Statement ein queryTest.SQL.Text := Replace(queryTest.SQL.Text,'IsNull(','Nvl'); machen.

Hat man hier schon einen "Erfahrungsschatz" gesammelt, könnte man dieses Replace (oder was auch immer erforderlich ist) vor dem Ausführen des SQLs machen und bei erfolgreicher Ausführung in der SQL-Tabelle schonmal aktualisieren.

Und IsNull wird nur in den Statements ersetzt, in denen die Fehlermeldung hergibt, dass IsNull ein Problem macht.
Damit sinkt dann die Wahrscheinlichkeit, irgendwas SQL-typisches versehentlich in Zeichenfolgen zu ersetzen.

Dadurch kann man durch wiederholtes Ausführen der Routine und jeweilige Ergänzung durch neue Erkenntnisse, die SQL-Tabelle auf einen etwas orcalekonformeren Stand bringen. Mit ein bisserl Glück muss man dann nicht mehr an eine Unmenge von SQLs ran, sondern nur noch an die, bei denen sich die Syntax grundlegend unterscheidet. Das dann zu "reparieren" dürfte immer noch mehr als reichlich Arbeit werden.

Kennst Du dasda schon?
https://www.oracle.com/database/tech...to-oracle.html
https://smarttechways.com/2017/07/05...ver-to-oracle/
http://oracle-mssql-dba.blogspot.com...racle-10g.html

Sind nur "Fundstücke" über Bei Google suchenmigration mssql oracle und dort dann gesagt, dass man keine Ergebniss zu MySQL haben möchte also dashier (hoffentlich): https://www.google.com/search?q=migr...e&start=0&sa=N

Keine Ahnung, ob da was brauchbares bei ist oder es eventuell auch noch was "besseres" geben könnte.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: DB-Funktionen von MSSQL in Oracle nachbauen

  Alt 20. Mai 2020, 16:24
Mal eine Frage zu Oracle-Packages:

Wenn ich die gewünschten Funktionen nachbaue in einem Package, dann muss ich sie im SQL-Statement scheinbar mit dem Package-Namen aufrufen, also z.B. meine neue ISNULL-Funktion wäre dann aufzurufen als:

Select MYPACKAGENAME.ISNULL(NULL,'Ersatz') From DUAL

Kann man das irgendwie so hinkriegen, dass man den Packagename nicht davor angeben muss, denn das würde mir in meiner Situation nicht helfen. Was ich so beim googlen finde, kann man das nur beim Oracle STANDARD Package weglassen, wo Oracle eigne Funktionen mit ausliefert.

Ich habe nämlich festgestellt, das Overloading nur in Packages geht, nicht in Stored Functions direkt, da müssen Funktionsnamen eindeutig sein, drum wäre es schon schön Packages verwenden zu können.
Ralph
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#5

AW: DB-Funktionen von MSSQL in Oracle nachbauen

  Alt 20. Mai 2020, 17:01
Nach der Aussage dort https://asktom.oracle.com/pls/apex/f...:4743759113231 geht es wohl nicht.

Oder eventuell hier: https://stackoverflow.com/questions/...kage-in-pl-sql

Hatte eigentlich gedacht, dass es gehen müsste. Wäre da dann wohl auch erstmal auf die Nase gefallen.

Eventuell hier doch noch was zu finden?

https://www.google.com/search?q=orac...utf-8&oe=utf-8
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz