PDA

View Full Version : Zugriff vom SQlRPGLE AUF DB2 Linux



Seiten : 1 [2] 3

woodstock99
09-07-15, 08:20
ich muss aber mit commit arbeiten weil commit * none die remote DB nicht zulässt .

BenderD
09-07-15, 09:42
... aber nicht mit hold!

woodstock99
09-07-15, 09:58
ja das ist mir klar aber wie stell ich das um oder was muss ich machen ?

Exec SQL Prepare DynCsrC1 From :String1;
Exec SQL Declare Icur Cursor For DYNCSRC1;
Exec SQL Open ICUR;
Exec SQL Fetch Next From ICUR into :MYDATA;

Da ist nirgends ein HOLD WITH :(..

BenderD
09-07-15, 10:15
was muss ich machen ?


zu aller erst mal genau beschreiben, was Du da machst und was wann genau passiert...
dann noch alle Ungereimtheiten beseitigen:
- lokal ist das SQL package Bestandteil des Programmes
- remote wird ein package für static SQL benötigt
-- das wird erstellt beim CRTSQLxxx, wenn man für RDB die Datenbank angibt
-- alternativ kann man CRTSLxxx mit RDB(*local) machen und dann CRTSQLPKG mit Angabe der RDB machen

D*B

B.Hauser
09-07-15, 10:18
wo ist der COSE?
Wie setzt Du den COMMIT ab als SQL-Befehl (wenn ja wie) oder RPG/CL-Befehl.
Wird der COMMIT nach dem CLOSE abgesetzt?

Birgitta

woodstock99
09-07-15, 11:01
"alternativ kann man CRTSLxxx mit RDB(*local) machen und dann CRTSQLPKG mit Angabe der RDB machen"
hab ich gemacht.

ich will per SQLRPGLE auf eine DB2 zugreifen die auf Linux läuft. ich kann nur unter Commit steuerung zugreifen ansonsten kommt ein fehler das ich per commit zugreifen soll .

@birgitta commit wird im SQLRPGLE . der Commit schliesst ja auch den Cursor weil ich kein With hold habe oder??

Exec SQL Fetch Next From ICUR into :MYDATA;
eXec SQl SET CONNECTION :lokal_RDB;
EXEC SQL
INSERT into sss.ss values(:MYDATA);
commit;


sollte doch funzen aber ich bekomme immer diesen fehler

Message . . . . : DRDA resource does not allow SQL cursor hold.
Message ID . . . . . . : CPD835D Severity . . . . . . . : 20
Message type . . . . . : Diagnostic
Date sent . . . . . . : 09.07.15 Time sent . . . . . . : 11:56:24

Message . . . . : DRDA resource does not allow SQL cursor hold.
Cause . . . . . : A commit or rollback operation, with SQLHOLD(YES)



hab das Commit auch schon ans ende des PGMs gesetzt - Davor schliesse ich ich die connection und den cursor von hand . selbe fehlermeldung

BenderD
09-07-15, 11:24
- da fehlt immer noch die Cursor Definition (bzw. der Rest des Programms)
- die Connection lässt sich nicht schließen, wenn noch uncommitted changes anstehen
- am einfachsten beendet man mit: release <Connection Name> und dann commit.

D*B

woodstock99
09-07-15, 11:30
Exec SQL Prepare DynCsrC1 From :String1;
Exec SQL Declare Icur Cursor For DYNCSRC1;

BenderD
09-07-15, 11:36
... wenn du keine Lust hast, dein Programm hier zu outen, dann habe ich keine Lust mehr rumzuraten...

woodstock99
09-07-15, 11:45
das war das ganze pgm , die connection setzen usw ist ja standart .

ich habe meinen fehler gefunden

ich habe den commit ohne EXEC SQl ausgeführt :( .................
ist mir gar nicht aufgefallen :(

aber vielen dank für eure zeit