-
- In der SQL Programmierung kann man wie beim embedded SQL dynamisches SQL verwenden.
- Was in der SQL-Programmierung nicht geht, ist Datenstrukturen zu verwenden. Wenn also SELECT * FROM verwendet wird (statisch oder dynamisch) spielt dabei keine Rollen, müssen die Spalten einzeln in lokale (Host-)Variablen ausgegeben werden.
- Wenn der Datei-Aufbau identisch ist, sich lediglich die Bibliothek ändert, sollte die Ausgabe in immer die gleichen Variablen kein Problem sein. Besser wäre allerdings gezielt die benötigten Spalten auszuwählen.
- Wenn tatsächlich nur eine Variable und eine Zeile ausgelesen werden soll, kann das in der SQL-Programmierung sehr elegant mit dynamischem SQL gelöst werden:
Code:
create function HSCOMMON10/getHist_WP (MyLib varchar (20),
KennNummer varchar (7))
returns varchar (40)
language sql
reads sql data
no external action
returns null on null input
Set Option DbgView = *Source
Begin
Declare ResultHis varchar (30) Default '';
Declare CmdString VarChar(256) Default '';
Set CmdString = 'Values (select Feld From ' concat Trim(MyLib) concat
'.MyTable ' concat
' where KennNr = ?' concat
' Fetch First Row Only) into ?';
Prepare DynSQL From CmdString;
Execute DynSQL Using KennNummer, ResultHis;
Return ResultHis;
End
Seit den letzten Neuerungen kann man das dynamische SQL-Statement auch direkt beim PREPARE zusammenknüppeln, d.h. die extra Variable ist nicht mehr notwendig
- SQLPATH wird verwendet um unqualifiziert angegebene Stored Procedures, User Defined Functions und User Defined Table Functions zur Laufzeit aufzufinden, wenn SQL-Naming verwendet wird.
- CURRENT_SCHEMA (oder DEFAULT SCHEMA) wird für ünqualifiziert angegebene Tabellen oder Views verwendet unabhängig davon, ob SQL- oder System-Naming verwendet wird.
Wird bei System-Naming das CURRENT_SCHEMA angegeben wird die Bibliotheksliste ingoriert.
Wird SQL-Naming verwendet, wird zur Compile-Zeit für statisches SQL die Bibliothek über das CURRENT SCHEMA ermittelt und hart in das Objekt übernommen (alternativ kann die DEFAULT Bibliohtek auch über die Option DFTRDBCOL im SET OPTION Statement fix gesetzt werden.
Für dynamisches SQL kann beim SQL-Naming über die Option DYNDFTCOL im SET OPTION statement festgelegt werden, ob zur Laufzeit das CURRENT SCHEMA ermittelt wird, oder ob das gleiche Schema wie für das statische SQL verwendet wird.
Beim System-Naming wird die Bibliotheksliste abgegriffen.
Birgitta
Similar Threads
-
By steven_r in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 03-01-07, 13:07
-
By DEVJO in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 12-10-06, 18:28
-
By jakarto in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 24-07-06, 13:41
-
By HACHIMAN in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 22-05-06, 09:48
-
By Fondue in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 28-04-06, 19:40
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks