Announcement

Collapse
No announcement yet.

Rückgabewert einer Stored Procedure an VBA ?

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

  • Rückgabewert einer Stored Procedure an VBA ?

    Hallo,

    es soll ja theoretisch möglich sein, dass eine Stored Procedure einen Wert zurückgibt. Ich habe jetzt folgende Stored Procedure:

    Code:
    create or replace procedure SP_TEST
    (usercode       IN integer,
     runningcode    IN integer,
     state          OUT number) AS
    
    BEGIN
    
    DECLARE 
        SZSQL           varchar2(3000);
        
        BEGIN        
           state := 4;
           szSQL := 'Test';
        END;
    END;

    Jetzt wollte ich diese aufrufen und dabei den Rückgabewert abfangen. Normalerweise macht man das ja mit EXECUTE und in Klammern die IN-Parameter. Aber wenn ich es so versuche, sagt er "falsche Anzahl an Parametern": EXECUTE SP_TEST (1,2);


    Hat jemand einen Tipp, wie ich den OUT-Parameter bekomme?


    Letztendlich möchte ich den OUT-Parameter gern in meinem VBA haben, damit rufe ich die SP auf. Aber das wird wohl nicht so einfach möglich sein *seufz*. Ich nutze für das VBA als DB-Connection "Microsoft OLE DB Provider for Oracle".


    Habt ihr da irgendeinen Tipp?
    Viele Grüße,



    Tim

  • #2
    Nur so ein Gedanke:
    Sollte es nicht eher eine
    function
    sein anstatt einer
    procedure
    ?!

    Comment


    • #3
      Mhhh ich muss zugeben, dass ich noch nicht lange mit Oracle arbeite.
      Eigentlich würde auch eine function gehen, aber ich muss in meinem Code öfters ein COMMIT/ Rollback machen, geht das denn auch in Functions?

      Und wie sieht der Aufruf einer function mit Rückgabewert aus?

      MfG Tim

      Comment


      • #4
        Hi,

        ein commit/rollback geht natürlich auch wenn Du eine Funktion aufrufst. Allerdings kannst Du eine Prozedure genausogut verwenden. Eine Funktion bräuchtest Du nur, wenn Du sie in ein SQL einbinden wollen würdest. Z.B:
        Code:
        select func_berechne_wert(spalteX), spalteY from mytabelle
        Ich kenn VB(A) jetzt nicht besonders, aber ich hab in der Doku zum Oracle OLE Provider (du solltest ernsthaft überlegen den von MS gegen den von Oracle auszuwechseln) folgendes gefunden.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          ein commit/rollback geht natürlich auch wenn Du eine Funktion aufrufst
          Hinweis:
          In gespeicherten Funktionen/Prozeduren darf COMMIT verwendet werden. Allerdings kann eine gespeicherte Funktion, die COMMIT enthält, nicht als Teil einer SELECT- oder DML-Anweisung verwendet werden.

          kuemmelchen

          Comment


          • #6
            Richtig, es sei denn, die SP/SF öffnet eine eigene autonomen Transaktion (von solchen Schweinerreien sollte man die Finger lassen ).

            Aber ich glaube (hoffe) der OP will innerhalb seines VBA Codes committen.

            Dim
            Zitat Tom Kyte:
            I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

            Comment

            Working...
            X