Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Rückgabe von Werten durch eine Stored Procedure (https://www.delphipraxis.net/75235-rueckgabe-von-werten-durch-eine-stored-procedure.html)

Ati 16. Aug 2006 12:00

Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos

Rückgabe von Werten durch eine Stored Procedure
 
Hallo zusammen,

durch einen anderen Thread beschäftige ich mich zur Zeit mit SP´s. Eine einfache SP zum Updaten von Datensätzen habe ich mittlerweile hinbekommen (läuft unter Lazarus nunmal etwas anders). Aber wie erhalte/verarbeite ich Werte, welche die SP zurückgeben soll. Wollte mal als einfaches Beispiel alle Datensätze zählen lassen.

Ati

Lemmy 16. Aug 2006 12:06

Re: Rückgabe von Werten durch eine Stored Procedure
 
Hi,

SQL-Code:
CREATE OR ALTER PROCEUDRE CountCustomers RETURNS (iCount:Integer)
AS
BEGIN
  Select Count(*) from customers INTO :iCount;
  SUSPEND;
END^
Dann ganz normal mit

SQL-Code:
Select * from CountCustomers
aufrufen.

Auf meiner Seite findest Du ein paar Tutorials (SQL,SP,...) für Firebird.

Lemmy

Ati 16. Aug 2006 12:26

Re: Rückgabe von Werten durch eine Stored Procedure
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht bin ich ja auch zu doof, aber ich bekomme im IBExpert die SP nicht erstellt (s.Anhang).

mkinzler 16. Aug 2006 12:30

Re: Rückgabe von Werten durch eine Stored Procedure
 
Du mußt das Terminierungszeichen für das Skript auf was anderes wie Semikolon setzten, das FB erkennt was zum Skript und was zur Procedure gehört. Einfach am Anfang

SET TERM !! ;

und am Schluß

SET TERM ; !!

setzen

mquadrat 16. Aug 2006 12:30

Re: Rückgabe von Werten durch eine Stored Procedure
 
So, wie Lemmy das geschrieben hat, wird das auch nix ;)

SQL-Code:
CREATE PROCEDURE CountCustomers returns (iCount integer)
AS
BEGIN
  for Select Count(*) from customers INTO :iCount do
    SUSPEND;
END
So sollte das besser gehen.

Ati 16. Aug 2006 12:34

Re: Rückgabe von Werten durch eine Stored Procedure
 
Stimmt mquadrat....so hat es funktioniert.

Lemmy 16. Aug 2006 12:34

Re: Rückgabe von Werten durch eine Stored Procedure
 
Zitat:

Zitat von mquadrat
So, wie Lemmy das geschrieben hat, wird das auch nix ;)

*ggg* Doch funktioniert.. Habe aber in der Deklaration aus versehen einen ":" gemacht:

SQL-Code:
CREATE OR ALTER PROCEDURE TestCount
RETURNS (iCount INTEGER)
AS
BEGIN
  SELECT Count (*) FROM THMSContact INTO :iCount;
  SUSPEND;
END^
Eine For-Do-Suspend Schleife ist nur erforderlich wenn mehr als ein Datensatz zurückgeliefert wird!

Lemmy

mquadrat 16. Aug 2006 12:36

Re: Rückgabe von Werten durch eine Stored Procedure
 
@Lemmy

Upsa, hab mir die Prozedur gar nicht angeschaut :D Stimmt bei ner Count-Query braucht man natürlich keine for...do Schleife.

hoika 16. Aug 2006 12:53

Re: Rückgabe von Werten durch eine Stored Procedure
 
Hallo,

auch das SET TERM ist nicht notwendig (im IBExpert stored procedure editor)
sondern nur, wenn man es als Script ausführen will.


Heiko

mkinzler 16. Aug 2006 13:04

Re: Rückgabe von Werten durch eine Stored Procedure
 
Zitat:

Zitat von hoika
Hallo,

auch das SET TERM ist nicht notwendig (im IBExpert stored procedure editor)
sondern nur, wenn man es als Script ausführen will.


Heiko

Weil es IBExpert automatisch so ergänzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz