Announcement

Collapse
No announcement yet.

Datensatz speichern über Execute Procedure

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

  • Datensatz speichern über Execute Procedure

    Ich rufe über ein Delphi-Programm eine Stored Procedure in Firebird 1.5 auf. Die Stored Procedure hat folgende Funktionen:
    1. Übergabe einiger Return-Parameter (funktioniert bereits)
    2. Speichern der Input-Parameter in einer Tabelle

    Der Punkt 2 funktioniert noch nicht. Ich habe versucht, über eine "Insert Into"-SQL die Werte zu speichern, doch es funktioniert nicht. Eine Fehlermeldung erscheint auch nicht.

    Nachfolgend der Pseudo-Code:
    CREATE PROCEDURE Test(sInput VARCHAR(10))
    RETURNS (sOutput VARCHAR(10)) AS
    BEGIN
    sOutput = 'True';
    Suspend; // bis hierhin funktioniert noch alles

    INSERT INTO SaveInput(sInput)
    VALUES (:sInput);
    END
    ^

    Wie bekomme ich es hin, daß die Werte gespeichert werden oder zumindestens, daß ich eine Fehlermeldung bekomme ?

  • #2
    Carsten,

    eine SP die DML (Insert, Update, Delete) durchführt sollte NIE "suspendable" sein.
    SUSPEND wird benötigt, wenn Du eine SELECATBLE PROCEDURE hast (die Datensätze zurückgibt) und dann auch mit SELECT ... FROM aufgerufen wird.

    Deine Prozedur soll ausgeführt werden, also das SUSPEND raus!

    CREATE PROCEDURE SP_TEST_INPUT
    ( sINPUT VARCHAR(10) )
    RETURNS ( sOUTPUT VARCHAR(10) )
    AS
    BEGIN
    sOUTPUT = 'True';

    INSERT INTO SaveInput ( sInput )
    VALUES ( :sInput );
    END

    fertig.

    Jetzt kannst Du die SP ausführen und in Delphi kannst Du (je nach Zugriffskomponenten) den Wert für sOUTPUT mit ParamByName bzw FieldByName abfragen.

    Luc

    Comment

    Working...
    X