-
LIKE keyword in Embedded SQL
Ich versuche in einer Datei mittels des Namens eine dazugehörige Nummer herauszufinden.
Das Statement würde interaktiv so aussehen:
PHP-Code:
SELECT nummer, name
FROM datei
WHERE name like 'Meier%'
Wenn ich aber eine RPG-Variable (search) verwende und mein Service-Programm aufrufe, findet er keine Daten.
Der Inhalt von search ist 'Meier%'.
PHP-Code:
c/Exec SQL
c+ Declare C01 Cursor for
c+ Select nummer, name
c+ From datei
c+ Where name LIKE :search
c+ For Read Only
c/End-Exec
-
Der Grund ist, dass die Variable nach dem % noch Leerzeichen enthält die natürlich mitgesucht werden. Folgende Ergänzung:
... like trim(:search) ...
Damit werden Leerzeichen eliminiert.
-
Vielen Dank!
Mit %trim hatte ichs schon probiert, aber das hat einen Fehler ergeben. Mit trim noch nicht.
Gibt es irgendwo eine Hilfe vielleicht ein RedBook über embeddet Sql in RPG?
-
Das hat nichts mit embedded SQL zu tun sondern gehört zu SQL !
%trim() ist eine RPG-Builtin-Funktion
trim() ist eine SQL-Funktion
Am besten lädst du dir das SQL-Reference-Handbuch mal runter (pdf):
http://publib.boulder.ibm.com/iserie...f/rzahfli0.htm
-
Zitat von woki
Vielen Dank!
Mit %trim hatte ichs schon probiert, aber das hat einen Fehler ergeben. Mit trim noch nicht.
Gibt es irgendwo eine Hilfe vielleicht ein RedBook über embeddet Sql in RPG?
Hallo Woki,
die Scalare Funktion TRIM kann man sich auch sparen, wenn man die Hostvariable als ein Feld mit Variabler Länge definiert. Dann werden die folgenden Zeichen ignoriert.
Alternativ kann man auch statt LIKE die Scalare Funktion POSSTR zu verwenden. Auch hier muss man entweder mit der Scalaren Funktion TRIM oder einer Host-Variable mit variabler Länge arbeiten. Die Funktionalität der Funktion POSSTR entspricht der Funktionalität des OpCodes SCAN bzw. der Built-In-Function %SCAN in RPG.
Beispiel:
PHP-Code:
D HstName S 50A varying
*--------------------------------------------------------
C Eval HstName = '%Meier%'
C/Exec SQL
C+ Declare CsrC1 Cursor for
C+ Select Name from Adresse
C+ Where Name Like :HstName
C/End-Exec
C Eval HstName = 'Huber'
C/Exec SQL
C+ Declare CsrC2 Cursor for
C+ Select Name from Adresse
C+ Where PosStr (Name, :HstName) > 0
C/End-Exec
Unter folgenden Quellen findest Du Informationen über Embedded SQL:
1. Who Knew You Could Do That with RPG IV? A Sorcerer's Guide to System Access and More
2. Embedded SQL Programming
3. Embedded SQL
Birgitta
Similar Threads
-
By Squall in forum NEWSboard Programmierung
Antworten: 23
Letzter Beitrag: 18-10-06, 12:01
-
By muadeep in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 03-08-06, 13:25
-
By klausgkv in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 08-06-06, 13:47
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
By e_sichert in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-05-06, 10:47
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