Anmelden

View Full Version : sqlrpgle



co_steffl
17-11-11, 12:48
Hallo zusammen

ich stehe wieder mal vor einem Problem mit SQL in RPG
Für einen Exec prepare benötige ich eine Sql String. (unten)
Dabei sind die Felder in RPG mit

ALARM_DATE D(10*ISO-) 72D 240M
ALWNULL

+

SMALLDAT D(10*ISO-) 60D 194M 198


definiert.

Bei der Compilierung bekomme ich den Fehler "Operanden sind mit der Art des Operators nicht kompatibel"

Ich bin mir nicht sicher ob der Syntax im String richtig ist oder gibt es hier noch eine Funktion die ich mit hinein bringen muß?

h_sqlcommand = ' +
SELECT * from Lib/File where (xxxxxx = 30 or +
xxxxxxx = 31) and File_date = ' + smalldat +
' order by xxxxxxx +
';

exec sql prepare sel1 from :h_sqlcommand;


Gruß co_steffl

Fuerchau
17-11-11, 13:08
Stringaufbereitung:

h_sqlcommand = ' +
SELECT * from Lib/File where (xxxxxx = 30 or +
xxxxxxx = 31) and File_date = ''' + %char(smalldat:*iso) +
''' order by xxxxxxx +
';

Das Datum mus im ISO-Format als Zeichenkette übergeben werden.
Wenn File_date auch ein DATE-Feld ist, wird automatisch gecastet.

Achte auf die 3 Hochommata !

co_steffl
17-11-11, 13:11
Hallo Mr. Fuerchau,

danke für den Tipp! Wo lernt man so was? Darf ich noch was fragen?
Was heißt gecastet?

Gruß
Co_steffl

andreaspr@aon.at
17-11-11, 13:13
Du kannst das aber auch mittels Parameter lösen. Dann ersparrst dir das, da die Konvertierung vom System übernommen wird.


h_sqlcommand = ' +
SELECT * from Lib/File where (xxxxxx = 30 or +
xxxxxxx = 31) and File_date = ?' order by xxxxxxx +
';

exec sql prepare sel1 from :h_sqlcommand;

exec sql Declare c1 cursor for sel1;

exec sql open c1 using :smalldat;


lg Andreas

andreaspr@aon.at
17-11-11, 13:17
Wo lernt man so was?
- Im Forum ;)
- SQL(DB2) Kurse
- SQL Referenzhandbuch der IBM


Was heißt gecastet?
Ein CAST ist eine Konvertierung z.B. von Integer in Character.

co_steffl
17-11-11, 13:20
;) Dank an das Forum

co_steffl