[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Mar 2002
    Beiträge
    5.376
    ... eigentlich müssten die defaults passen, hast du die Connection richtig eingerichtet?

    D*B

    Zitat Zitat von Martin82 Beitrag anzeigen
    Ok.
    Muss ich dazu auch irgendwelche Options in der STP setzen?

    Hab nämlich nach dem Aufruf der STP ein rollback im Java-Programm versucht, die Updates der STP wurden aber nicht zurückgesetzt.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  2. #2
    Registriert seit
    Oct 2007
    Beiträge
    15
    Habs jetzt auch mit einer Test-STP probiert. Folgender Code:
    Code:
    create procedure test_cc()
    language sql
    begin
    
    declare exit handler for sqlexception rollback;
    
    insert into test values(1,'');
    /* Dies löst einen SQL0803 aus (Doppelter Schlüsselwert)*/
    insert into test values(1,'');
    
    commit;
    
    end;
    Den Aufruf hab ich über RunSQLScripts vom System i Navigator gemacht. JDBC-Settings: Cursor stability(*CS)

    Theoretisch müsste dann ja das erste INSERT zurückgesetzt werden oder hab ich da einen Denkfehler? Es klappt nicht. Auch nicht wenn ich nach dem Aufruf der STP explizit ein rollback ausführe...

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    schau mit dem befehl DSPPGM test_cc was in den beschreibungen unter COMMIT-Steuerung drinnen steht.
    wenn *NONE angegeben ist, würde ich beim erstellen der SP (wie von mir vorhin beschrieben) den eintrag angeben.

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.376
    ... erst mal würde ich das nicht mit Oops Nerv testen, da sieht man zu wenig und außerdem ist das Teil buggy.
    Was hast du jetzt eigentlich vor? Master oder Slave? Das, was du da machst, sieht nach slave aus, da gibt es mittlerweile eine Einstellung COMMIT ON RETURN YES, die muss nach der Language Clause platziert werden, die sollte das eigentlich schon tun.

    D*B

    Zitat Zitat von Martin82 Beitrag anzeigen
    Habs jetzt auch mit einer Test-STP probiert. Folgender Code:
    Code:
    create procedure test_cc()
    language sql
    begin
    
    declare exit handler for sqlexception rollback;
    
    insert into test values(1,'');
    /* Dies löst einen SQL0803 aus (Doppelter Schlüsselwert)*/
    insert into test values(1,'');
    
    commit;
    
    end;
    Den Aufruf hab ich über RunSQLScripts vom System i Navigator gemacht. JDBC-Settings: Cursor stability(*CS)

    Theoretisch müsste dann ja das erste INSERT zurückgesetzt werden oder hab ich da einen Denkfehler? Es klappt nicht. Auch nicht wenn ich nach dem Aufruf der STP explizit ein rollback ausführe...
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Oct 2007
    Beiträge
    15
    Slave.

    Welches Proggi würdest du dann für solche Test-Sachen empfehlen?

    Habs jetzt mit COMMIT=*ALL probiert. Damit scheints zu klappen!

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.376
    ... immer das Umfeld, worin es später eingebunden wird.

    D*B

    Zitat Zitat von Martin82 Beitrag anzeigen
    Slave.

    Welches Proggi würdest du dann für solche Test-Sachen empfehlen?

    Habs jetzt mit COMMIT=*ALL probiert. Damit scheints zu klappen!
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  7. #7
    Registriert seit
    Apr 2005
    Beiträge
    104
    Der OpsNav war zwar recht fehleranfällig(und ist es vermutlich immer noch), aber zum Testen eigentlich klasse. Ich hab viele Scripts geschrieben, um Stored Procedures und Functions erstmal damit zu testen, mit gutem Erfolg. Sowohl einige positive als auch (mehr) negative Tests.

    Außerdem möchte ich der Aussage mit dem Commitment-Control auch widersprechen. Bei größeren Stored-Procedures habe ich doch auch ROLLBACK verwendet, um letztendlich scheiternde Transaktionen ohne Würgen wieder glatt zu stellen, und das Verhalten in jeder Hinsicht getestet. Natürlich setzt man dann entsprechende Returncodes, damit z.B. Java-Programme mitbekommen, daß die Verarbeitung gescheitert ist.

    PS: Benutzt Du eigentlich ATOMIC ?

  8. #8
    Registriert seit
    Oct 2007
    Beiträge
    15
    Bin da ganz bei dir mit deiner Meinung!

    Nein, benutze kein ATOMIC!

  9. #9
    Registriert seit
    Mar 2002
    Beiträge
    5.376
    ... ich erkenne zwar nicht welcher Aussage du da widersprechen willst, bei commit in Procedures sind schon ein paar Dinge zu beachten:
    - Commit/Rollback ist eine Eigenschaft einer Connection bzw. der Activationgroup und wenn eine Procedure innerhalb einer gesicherten Transaktion aufgerufen wird und dann ein Commit oder Rollback absetzt, dann hat das Nebeneffekte für die offene Transaktion.
    - gegen den Oops Nerv spricht hier in aller erster Linie die mangelnde Dokumentiertheit und daraus resultierende fehlende Reproduzierbarkeit. Gerade Abläufe wie hier riechen förmlich danach (so kann es für ein CREATE PROCEDURE wichtig sein, ob bei der Erstellung Commit aktiv ist, oder nicht).

    D*B

    Zitat Zitat von UFK Beitrag anzeigen
    Der OpsNav war zwar recht fehleranfällig(und ist es vermutlich immer noch), aber zum Testen eigentlich klasse. Ich hab viele Scripts geschrieben, um Stored Procedures und Functions erstmal damit zu testen, mit gutem Erfolg. Sowohl einige positive als auch (mehr) negative Tests.

    Außerdem möchte ich der Aussage mit dem Commitment-Control auch widersprechen. Bei größeren Stored-Procedures habe ich doch auch ROLLBACK verwendet, um letztendlich scheiternde Transaktionen ohne Würgen wieder glatt zu stellen, und das Verhalten in jeder Hinsicht getestet. Natürlich setzt man dann entsprechende Returncodes, damit z.B. Java-Programme mitbekommen, daß die Verarbeitung gescheitert ist.

    PS: Benutzt Du eigentlich ATOMIC ?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Berechtigung für Stored Procedure
    By rebe in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 12-10-06, 11:22
  2. SQL Stored Procedure verschwindet
    By florian in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 17-05-06, 16:08
  3. Stored Procedure mit Problemen
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 15-04-05, 09:04
  4. Java Stored Procedure
    By HeisigA in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 21-02-05, 18:58
  5. Löschen/Überschreiben einer Stored Procedure
    By Frank Pusch in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 13-06-01, 17:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •