-
Hallo,
1. Wo willst Du das FOR READ ONLY angeben?
FOR READ ONLY ist Bestandteil des SELECT-Statements (und nicht des DECLARE-Statements) und muss deshalb in den String der PREPARED werden soll integriert werden.
2. Ist das SQL statement wirklich dynamisch, d.h. werden unterschiedliche Spalten verwendet oder wechseln die Dateien/Tabellen bei den einzelnen Aufrufen.
Wenn beides mit NEIN beantwortet werden kann, ist dynamsiches SQL NICHT erforderlich.
Hostvariablen für unterschiedliche Selektionen und unterschiedliche Sortiertungen über CASE-Anweisungen sind beim statischen SQL möglich.
Beim statischen SQL wird das SQL Statement zur Compile-Zeit geprüft und fällt nicht erst zur Laufzeit auf die Nase.
Birgitta
-
Guten Morgen!
Herzlichen dank für die schnelle Antwort Fr. Birgitta.
Zum Punkt 1:
Schande über mein Haupt, ich war mir dessen nicht bewusst. Danke nochmals!
Punkt 2:
Da in der Protokollanzeige Filterungen möglich sind, setze ich mir den String bei Änderungen neu zusammen.
(#HK = ')
Code:
SqlStm = 'Select * from TSTPROT where STATUS like ' + #HK + %trim(bsStatus) + #HK + ' order by fNR DESC';
Beim 1. Aufruf & falls mein Suchfeld leer ist befülle ich die Variable bsStatus mit '%'.
Falls ich hier mist zusammen rede (was sehr gut möglich ist) bitte ich das zu entschuldigen.
-
... den like könnte man noch ganz gut auflösen (select ... where Feld like :HostVar) beim Order by kann man mit hinreichendem Releasestand auch mit Case Konstrukten noch was zusammen basteln.
Mit dynamischem SQL ist man aber für solche Filterungen deutlich flexibler.
Von den Vorteilen des statischen SQL bleibt ohnehin nur die Prüfung zur Compiletime, die Performance Vorteile fallen bei Case Konstrukten mit Order By in sich zusammen und sind ohnehin im praktischen Einsatz allenfalls marginal (kann sogar langsamer sein!!!)
D*B
 Zitat von Curan
Guten Morgen!
Herzlichen dank für die schnelle Antwort Fr. Birgitta.
Zum Punkt 1:
Schande über mein Haupt, ich war mir dessen nicht bewusst. Danke nochmals!
Punkt 2:
Da in der Protokollanzeige Filterungen möglich sind, setze ich mir den String bei Änderungen neu zusammen.
(#HK = ')
Code:
SqlStm = 'Select * from TSTPROT where STATUS like ' + #HK + %trim(bsStatus) + #HK + ' order by fNR DESC';
Beim 1. Aufruf & falls mein Suchfeld leer ist befülle ich die Variable bsStatus mit '%'.
Falls ich hier mist zusammen rede (was sehr gut möglich ist) bitte ich das zu entschuldigen.
Similar Threads
-
By Rincewind in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 18-12-06, 13:58
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
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