Announcement

Collapse
No announcement yet.

Rückgabe von StoredProcedure

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

  • Rückgabe von StoredProcedure

    Hallo,<br>
    kann ich die Ergebnismenge einer Abfrage über eine SP zurückliefern?
    <p>
    In meinem konkreten Fall sieht es so aus:<br>
    <pre>
    create procedure stprOrt
    @soRT VARCHAR(40)
    AS
    SELECT PLZ,ORT
    FROM ORT
    WHERE ORT = @soRT
    RETURN @@ROWCOUNT
    GO
    </pre>
    </p>
    <p>
    Dazu habe ich ein ADOStoredProc, DBGrid und ein DataSource benutzt, bekomme jedoch nur die Anzahl als Zahl zurückgeliefert und nicht die einzelnen Datensätze in meinem DBGrid.
    </p>
    <p>Geht es überhaupt so wie ich es beschrieben habe und wenn ja, wie bekomme ich die Datenmenge auch in meinem DBGrid?
    </p>
    <p>Mein Quelltext sieht so aus:<br>
    <pre>
    procedure TForm1.cxButton1Click(Sender: TObject);
    begin
    ADOStoredProc1.Parameters.Refresh;
    ADOStoredProc1.Parameters[1].Value:=cxT.Text;
    ADOStoredProc1.ExecProc;
    cxTextEdit1.Text:=ADOStoredProc1.Parameters[0].Value;
    end;
    </pre>
    </p>
    Brian

  • #2
    Hallo,

    &gt;kann ich die Ergebnismenge einer Abfrage über eine SP zurückliefern?

    Selbstverständlich.

    &gt;..bekomme jedoch nur die Anzahl als Zahl zurückgeliefert

    Der Grund dafür liegt darin, dass die falsche Komponente (TADOStoredProc) genutzt wird. Immer dann, wenn die Stored Procedure eine Ergebnismenge zurückliefert, ist <b>TADODataSet</b> die richtige Wahl. Im Objektinspektor wird dazu die Eigenschaft <b>CommandType</b> auf den Wert <b>cmdStoredProc</b> gesetzt. Der Rückgabewert der Stored Procedure steht nach dem Öffnen der Datenmenge als erster Eintrag ([0]) in der <b>Parameters</b>-Kollektion bereit.

    P.S: Der Aufruf von <b>Refresh</b> hat in einem "richtigen" Programm nichts zu suchen. Statt dessen wird die Parameters-Kollektion in Delphi zur Entwicklungszeit über den Objektinspektor einmalig gefüllt.

    Comment

    Working...
    X