PDA

View Full Version : SQL-Prozeduren (Sourcen des Typs SQLPROC)



oappel
14-08-09, 14:38
Hallo zusammen,

eine Frage an die SQL-Gurus hier im Forum: ;)

Angenommen der Kunde hat n SQL-Prozeduren (Sourcen des Typs SQLPROC) auf der Maschine.
In fast allen Sourcen sind nach dem "BEGIN" lokale Variablen mit "DECLARE" deklariert.
Viele der Deklarationen beziehen sich auf die entsprechenden Felder in den Dateien.

Jetzt die Frage: :confused:

Kann man diese Deklarationen - wie in RPG - mit *LIKE DEFINE irgendwie auf die Dateien referenzieren?
Oder kann man diese Deklarationen in eine COPY-Strecke auslagern?

So wie es im Moment codiert ist, müssen alle Sourcen überarbeitet werden, wenn sich in einer Datei das entsprechende Feld (Länge oder Attribut) ändert!

:mad:

Vielen Dank für die Hilfe im voraus!



Mit freundlichen Grüßen

Olaf Appel

Fuerchau
14-08-09, 16:09
Nein, da ist leider Fleiß angesagt.

UFK
18-08-09, 09:29
Hm, da möchte ich den hinterlassenen Eindruck doch etwas relativieren:

SQL ist grundsätzlich flexibler als klassische AS400-Programme; SQL-stored-Procedures und Functions sind nicht starr mit einem bestimmten Format der Datenbankdateien verbunden, sie verwenden keinen LevelCheck, um zu prüfen, ob sich die Datei vielleicht geändert hat. Stattdessen mappen sie jedes Feld, bei Update, bei Select, bei Delete, und wenn Du beim Insert die Feldliste angibst, auch da ...

Interne Variable sind vor allem Zähler und Arbeitsfelder. Die sollte man nicht zu klein dimensionieren. Knauserige Definitionen wird man heute aber eh nicht mehr wünschen, eher großzügigere. Der Sprung wird also eher von short auf long oder double sein, und nicht selten von 12 auf 13 Ziffern vor dem Komma.

Neue Felder sind für SQL in der Regel auch kein Problem, wenn Du diese in der Tabelle mit einem vernüftigen Defaultwert definierst. Du mußt sie beim Insert dann nämlich nicht mehr angeben.

Fazit: ich habe etwas Erfahrung mit SQL-Programmierung, und mit Tabellen, die von den Kollegen ständig erweitert wurden. Selten mußte ich meine Programme nochmal anpassen. Meistens habe ich sie nicht einmal neu kompilieren müssen (create procedure oder create function)

Was man vermeiden sollte, das sind Umbenennungen von Feldern. Aber selbst das ist kein großes Problem, wenn die Namen signifikant genug sind, um ihr Vorkommen mit nem globalen Scan suchen und ersetzen können, z.B. mit PDM

Fuerchau
18-08-09, 10:30
Auch das kann ich nicht ganz so stehen lassen.
Definiere ich Variablen in der Prozedur zu groß, kann es durchaus zu Problemen und Fehlern führen (Überlauf, Abschneiden, o.ä.).
Es kann ja Absicht sein, so zu verfahren.

Sicher ist nur eins:
Eine Felddefinition wie LIKE wäre da schon hilfreich.