PDA

View Full Version : Insert Into mit Externer DS?



DEVJO
15-09-09, 10:14
Moin moin,

ich schreibe gerade an einem Service in dem ich einen Eingangsparameter als Externe DS definiert habe.


D In_OB_ORA E DS 512 ExtName(OB_ORA)
D Prefix(In_OB_)
D In_OB_Method 1
D In_OB_ReiDat D

Nun will ich einen Datensatz weg schreiben und möchte eigentlich ungern alle Felder angeben.....also versuchte ich folgendes:

/free
In_OB_CrtDat = %TimeStamp();
In_OB_CrtUsr = User;
in_OB_CrtPGM = 'P_SQLWrite';
exec sql
INSERT INTO OB_ORA
VALUES :In_OB_ORA;

If SqlCod = *Zero;
Positiv = TRUE;
Endif;

RETURN Positiv;
Bekomme allerdings beim Umwandeln eine verbraten.....

398 VALUES :In_OB_ORA; 037700 15.09.09
5761ST1 V6R1M0 080215 SQL-ILE-RPG-Objekt erstellen SRV_OB_ORA 15.09.09 10:55:57 Seite
DIAGNOSENACHRICHTEN
MSG ID WTK SATZ TEXT
SQL0117 30 397 Anweisung enthält falsche Anzahl an Werten.
Nachrichtenzusammenfassung
Ist das überhaupt so möglich, oder muss ich alle Felder abtippen :(

Fuerchau
15-09-09, 10:37
INSERT INTO OB_ORA
VALUES ( :In_OB_ORA );

Versuchs mal so

DEVJO
15-09-09, 10:41
Bekomme immer noch denselben Fehler

B.Hauser
15-09-09, 10:47
Deine Datenstruktur hat neben den Dateifeldern noch 2 weitere Felder, nämlich IN_OB_Method und IN_OB_ReiDat (Ich vermute da fehlt das S für Stand Alone Field). Damit stimmt die Anzahl der Felder nicht überein!

Birgitta

Fuerchau
15-09-09, 10:53
Jetzt hängts ggf. vom Release ab, ob der Precompiler mit PREFIX zurecht kommt.
Versuchs mal ohne.

Alternativ kann man auch die Multiple-Rows-Syntax anwenden:

insert into myfile
1 rows values(: Structur)

Ggf. muss die Struktur noch als OCCURS definiert sein.

DEVJO
15-09-09, 11:02
:) Habs mit einer Kombination aus den Tips hinbekommen

Hab jetzt einfach

D Write_ORA E DS 512 ExtName(OB_ORA)
D Positiv S N Inz(FALSE)
innerhalb der SubProcedure definiert und fülle mir dann das Ding und kann es dann direkt so weg schreiben.....
Top: Danke an euch :)

Fuerchau
15-09-09, 11:13
@Birgitta
Das habe ich doch glatt übersehen ;)