-
SQLRPGLE
Hallo zusammen,
in einem sqlrpgle soll in der Where Bedingung eine
In Abfrgae durchgeführt werden z.B:
C/EXEC SQL
C+ DECLARE
C+ SELECT
C+ FROM
c+ where
c*** laender in ('AU', 'D' , 'NL')
c+ laender in :wk2
Die Variable wk2 enthält folgenden Inhalt
WK2 = '('AU' , 'NL' , 'D') '
Leider klappt die SQL Abfrage nicht.
Kann man keine IN Abfrage mit einer Variablen durchführen ?
Gruss an alle
Michael
-
So geht das leider nicht. Du musst die Anzahl möglicher Inhalte per Programm bereits vorsehen und mehrere Variablen benennen:
where ... laender in (:vin1, :vin2, :vin3, ...) ...
-
Hallo Baldur,
okay, vielen Dank das klappt.
Ich habe aber ein Arrary DIM(99) mit den evtl vorkommenden
Länderkürzel. Wobei 1 bis n Elenente gefüllt sein können.
Mal sehen wie man soetwas machen könnte.
Gruss
Michael
-
Hallo Michael,
hier noch eine etwas unkonventionelle Methode. Du must nur den String entsprechend aufbereiten. Achtung der String sollte mit Komma beginnen und enden:
PHP-Code:
/Free
String = ',D,E,F,DK,CH,GB,USA,';
/End-Free
C/Exec SQL
C+ Declare .....
C+ Select LAENDER, ....
C+ from MyTable
C+ where :String like '%,' concat TRIM(LAENDER) concat ',%'
C/End-Exec
Wenn ich mich jetzt nicht vertippt habe, sollte es funktionieren. Performancemäßig dürfte es allerdings nicht der Renner sein.
Birgitta
-
Hallo zusammen,
danke für die Tipps. Ich habe es jetzt so gelöst:
where
laender in ( :wkdst1 , :wkdst2 , :wkdst3, :wkdst4 , :wkdst5 ,
:wkdst6 , :wkdst7 , :wkdst8, :wkdst9 , :wkdst10 ,
:wkdst11, :wkdst12, :wkdst13, :wkdst14 , :wkdst15 ,
:wkdst16, :wkdst17, :wkdst18, :wkdst19 , :wkdst20 ,
:wkdst21, :wkdst22, :wkdst23, :wkdst24 , :wkdst25 ,
:wkdst26, :wkdst27, :wkdst28, :wkdst29 , :wkdst30
)
wobei es dabei egal ist ob ein Wert in den Feldern steht. Die Felder die auf Blank stehen werden wohl ignoriert.
Viele
Grüße
-
Ignoriert ist falsch !
Solange dein Feld "laender" keine Blanks enthält ist das korrekt.
Ggf. solltest du die nicht benötigten Felder mit *HIVAL initialisieren.
-
*HIVAL?!
Was aber wenn man auch Sätze hat in denen LAENDER mit *HIVAL belegt sind?
Dann ist die Lösung genauso hinfällig, wie wenn man *Blanks für die nicht initialisierten Elemente verwenden würde!
Deshalb würde ich die nicht belegten Elemente mit dem einem ausgewählten Länder-Kennzeichen (z.B. dem letzten oder dem ersten ausgewählten Wert) auffüllen. Der Optimizer sollte erkennen, dass der gleiche Wert mehrfach angegeben wurde.
Birgitta
-
Hallo,
ich würde den Variablen die *BLANKS als Inhalt haben einen hexadecimalen Wert zuweisen, einen Wert der keinem Zeichen entspricht.
Damit ist sichergestellt, daß nicht ungewollt Sätze abgerufen werden, die eigentlich nicht gewünscht sind.
Similar Threads
-
By Jenne in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 06-06-07, 10:10
-
By guru30 in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 22-02-06, 14:53
-
By Stefan_Sk in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 12-07-05, 13:04
-
By Tobse77 in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 24-05-05, 08:56
-
By WeKaSys in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 15-10-04, 11:19
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