Tips und Techniken für die AS/400
Der 3. Teil der jährlichen Tips und Techniken jetzt online:
Thema: SQL
Blitz Links:
Berechnung der Anzahl von Tagen zwischen zwei Daten in SQL/400
Sortieren und Vergleichen in SQL/400 ohne Berücksichtigung der Groß/Kleinschreibung
Plazieren von SQL/400-Objekten in Benutzer-ASPs
SQL
Berechnung der Anzahl von Tagen zwischen zwei Daten in SQL/400
Wenn Sie die Anzahl der Tage zwischen zwei Daten in SQL/400 berechnen möchten, sollten Sie die Daten zunächst mit der Skalarfunktion Days (Tage) konvertieren, bevor Sie die Daten voneinander subtrahieren. Days nimmt ein Datumsargument und gibt die Anzahl der Tage seit dem ersten Januar 0001 zurück.
Mit der folgenden SQL-Anweisung wird eine Tabelle erstellt, die der Tabelle in Abbildung 6 entspricht:
Select CustID, OrderID, SaleDate, ShipDate, ( Days( ShipDate ) – Days( SaleDate ) ) As DaysToShip From Sale Where ShipDate Is Not Null Order By CustID, DaysToShip Desc
Vermeiden Sie Ausdrücke wie den folgenden, der als Ergebnis eine Zeitdauer ausgibt:
ShipDate – SaleDate
Wenn in SQL/400 ein Datum von einem anderen subtrahiert wird, ist das Ergebnis eine Zeitdauer (eine achtstellige Zahl im Format JJJJMMDD). Die folgenden Beispiele zeigen die ausgegebene Zeitdauer, wenn Sie den vorherigen Ausdruck auf die Werte in der Beispieltabelle anwenden:
SaleDate ShipDate ShipDate – SaleDate 1996-05-01 1996-05-15 14 1996-05-01 1996-05-15 10014 (1 Jahr, O Monate, 14 Tage)
Sortieren und Vergleichen in SQL/400 ohne Berücksichtigung der Groß/Kleinschreibung
Wenn Sie die „Order-By-Klausel“ in SQL verwenden und die Reihen anhand einer Buchstabenspalte sortieren, benutzt SQL/400 eine Sortiersequenz, um festzulegen, wie die Spaltenwerte sortiert werden sollen. Diese Sequenz wird mit dem Parameter SRTSEQ in den Befehlen STRSQL (SQL starten), RUNSQLSTM (SQL-Anweisung ausführen) oder CRTSQLxxx (SQL-Objekt erstellen) festgelegt. Parameter SRTSEQ (*LANGIDSHR) bestimmt eine von der Groß- und Kleinschreibung unabhängige Sortiersequenz. Der Spezialwert *LANGIDSHR legt fest, daß die „shared weight“-Sortiersequenz für die aktuelle Sprache (festgelegt mit dem Parameter LANGID) für sämtliche Buchstabenvergleiche verwendet wird. „Schmidt“, „SCHMIDT“ und „schmidt“ gelten daher als gleichwertig.
Wenn Sie mit CRTSQLxxx ein *MODULE-Objekt erstellen, gelten die Parameter SRTSEQ und LANGID für alle SQL-Anweisungen in dem Modul. Sie können mit dem Befehl CRTPGM (Programm erstellen) ein Programm erstellen, das die SQL-Module mit verschiedenen STRSEQ- und LANGID-Einstellungen kombinieren. Wenn Sie mit dem Befehl CRTSQLxxx ein *PGM- oder *SRVPGM-Objekt in einem Schritt erstellen, gelten die SRTSEQ- und LANGID-Parameter für alle SQL-Anweisungen in dem Programm oder Serviceprogramm.
Die SRTSEQ- und LANGID-Einstellungen gelten auch für Vergleiche in Where- und Having-Klauseln. Mit SRTSEQ(*LANGIDSHR) werden mit der folgenden Anweisung alle Angestellten mit Nachnamen „Schmidt“, „SCHMIDT“, „schmidt“ oder jeder beliebigen Kombination der Buchstaben s-c-h-m-i-d-t ausgewählt:
Select * From Employee Where LastName = "schmidt"
Wenn Sie einen von der Groß- und Kleinschreibung unabhängigen SQL-Index erstellen möchten, um damit die Leistung bei einer von Groß- und Kleinschreibung unabhängigen Auswahl und Bestellung zu verbessern, müssen Sie SRTSEQ(*LANGIDSHR) für die interaktive SQL-Sitzung oder den Befehl RUNSQLSTM festlegen, den Sie für die Create Index-Anweisung verwenden.
Plazieren von SQL/400-Objekten in Benutzer-ASPs
Mit Benutzer-ASPs (Benutzer-Zusatzspeicherpools) lassen sich die Performance und die Datenbank-Wiederherstellung verbessern. Ein ASP besteht aus einer Gruppe von Zusatzspeichereinheiten, die anhand spezieller Nummern in der Systemkonfiguration identifiziert werden. ASP 1 ist der System-ASP. Sie können ASP 2 bis 16 als Benutzer-ASPs erstellen. Weitere Informationen zum Erstellen von ASPs finden Sie in den Handbüchern Backup and Recovery (SC41-5304 für V4R1), Backup and Recovery – Basic (SC41-3304 für V3R2, SC31-4304 für V3R7) und Backup and Recovery – Advanced (SC41-3305 für V3R2, SC41-4305 für V3R7).
In den ASPs können Sie sowohl SQL/400-Objekte als auch mit CL-Befehlen erstellte Objekte speichern. Die beiden wichtigsten SQL/400-Verwendungszwecke sind das Speichern einer vollständigen SQL-Sammlung in einem Benutzer-ASP sowie das Speichern der Journalempfänger für das Journal einer Sammlung in einem Benutzer-ASP.
Noch nicht Abonnent? Sonderaktion nutzen.