Announcement

Collapse
No announcement yet.

Rückgabe eines Wertes nach Fehler nicht möglich?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Rückgabe eines Wertes nach Fehler nicht möglich?

    Folgende Stored Procedure will nicht den Wert 'F' zurückgeben
    <PRE>
    CREATE PROCEDURE PI_ART_CATEGORIES (
    I_IDNR BIGINT,
    I_SHP_IDNR BIGINT,
    I_CAT_IMAGE VARCHAR(80),
    I_PARENT_IDNR BIGINT,
    I_SORT_ORDER INTEGER)
    RETURNS (
    O_DONE CHAR(1))
    AS
    begin

    INSERT INTO ART_CATEGORIES (IDNR,SHP_IDNR,CAT_IMAGE,PARENT_IDNR,SORT_ORDER,
    DATE_ADDED,LAST_MODIFIED)
    VALUES (
    :I_IDNR,
    :I_SHP_IDNR,
    :I_CAT_IMAGE,
    :I_PARENT_IDNR,
    :I_SORT_ORDER,
    'NOW',
    null);
    o_done = 'T';
    suspend;
    when sqlcode -803 do
    begin
    /* ob mit oder ohne exception, ob vor oder dahinter, es kommt kein F an*/
    o_done = 'F';
    exception ERRNEWCATEGORIE;

    end
    end
    </PRE>

    Warum will das nicht, oder geht es nicht oder will es nur nicht in meinen Kopf, dass es nicht geht.

    Gruß+Danke;Bernhard

  • #2
    Hallo Bernhard,
    <br><br>
    füg nach dem <i>o_done = 'F'</i> ein <b>SUSPEND</b> ein, und verwende die Stored Procedure als Selectable Stored Procedure mit SELECT * FROM ...
    <br><br>
    Schöne Grüße,
    <br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Wie kann man nur so blöd sein, DANKE Thomas, ich hatte das problem, eine vernünftige exception hinzubekommen und dabei das suspend vergessen!

      by the way

      es geht zwar beides, macht aber keinen Sinn, denn nach einem suspend hat O_DONE zwar 'F', aber durch die exception kommt es zu einem Datensatz mehr, der NULL enthält. Also muss man sich entscheiden ob EXCEPTION oder Suspend! Denn sonst leifert die Procedure ZWEI Datensätze als Rückgabe, was ja nix bringt

      Ja, da waren dann mal wieder zuviel Bäume im Wald. Nochmals Danke
      Gruß
      Bernhar

      Comment


      • #4
        Hallo Bernhard,
        <br><br>
        mit was hast Du überprüft, dass 2 Datensätze zurückkommen? Im Moment sehe ich keinen Grund, dass 2 zurückgeliefert werden sollen.
        <br><br>
        Schöne Grüße,
        <br>
        Thoma
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment


        • #5
          wenn ich die sp - so wie sie oben steht + fehlendes suspend ;-) - im ibexpert direkt ausführe, bringt er zwei datensätze

          1. 'F'

          2. null

          warum das so ist, habe ich noch nicht gänzlich durchdrungen - und auf der suche nach einer erklärung in den 2000 pdf-seiten der dokumentation zum interbase bin ich zwar gealtert, zum Teil durch spin-off auch schlauer geworden, aber letztlich nicht fündig geworden.

          ich sag's ja immer wieder : Und Computer haben doch ein Eigenleben!

          gruß, bernhar

          Comment


          • #6
            Hallo Bernhard,
            <br><br>
            oder IBExpert hat ein Eigenleben. Wie sieht das Ganze mit dem Kommandozeilentool <b>isql.exe</b> aus?
            <br><br>
            Thomas
            <br>
            PS: Sorry für die verspätete Rückmeldung. Ich war auf Urlaub. ;-
            Thomas Steinmaurer

            Firebird Foundation Committee Member
            Upscene Productions - Database Tools for Developers
            Mein Blog

            Comment

            Working...
            X