![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBObjects
Verwendung einer Stored Procedure
Hallo zusammen,
ich kann kaum glauben dazu nix finden zu können, aber ich werd nicht fündig :wall: Ich verwende TIBOStoredProc mit Zugriff auf Firebird 2.1 Die dort angesprochene Prozedur liefert im Test den gewünschten Wert zurück. Daher muss mein Fehler irgendwo im Delphi Code liegen.
Code:
Die Variable iRESULT bleibt immer leer ... :gruebel:
IBOStoredProc1.ParamByName('pANZAHL').asInteger; //Parameter den die Prodezur zum ausführen braucht
iRESULT := IBOStoredProc1.ParamByName('pRESULT').asInteger; //Paremeter den die Prozedur als Result zurück liefert. IBOStoredProc1.Prepare; IBOStoredProc1.ExecProc; IBOStoredProc1.Close; DM.DataModule1.IBOTransaction1.CommitRetaining; Liegt es vielleicht an der Reihenfolge der Zeilen ? Hab´s ettliche Male gedreht, ich komm nicht drauf. Viele Grüße Thomas |
Re: Verwendung einer Stored Procedure
Mit IBO kenne ich mich nicht aus, aber ich kenne das so (die Syntax kann natürlich variieren):
Delphi-Quellcode:
SP.ParamByName('Param').Value := 42;
SP.Open; //nicht Exec Variable := SP.FieldByName('Rueckgabe').Value; |
Re: Verwendung einer Stored Procedure
das war´s :bounce1: :bounce1:
Für mich bist Du heute der Größte !! :hello: :hello: :hello: Viele Grüße Thomas |
Re: Verwendung einer Stored Procedure
Oder als normalen Select:
SQL-Code:
select <Felder> from <SP_Name>(<InputParameter>) where <Bedingung>;
|
Re: Verwendung einer Stored Procedure
Ich weiß auch nichts genaues (Firebird) aber bei mir sähe das so aus:
Delphi-Quellcode:
Ohne "select" kein Rückgabewert.
Query.sqltext:='select Myproc from dual';
Query.Open; if not Query.EOF then........ Gruß K-H |
Re: Verwendung einer Stored Procedure
Es gibt zwei Typen von SP
Der eine Typ von SP gibt eine Ergebnissmenge zurück. Dann ist in der SP zwingend ein SUSPEND pro Datensatz notwendig. Dann geht das was mkinzler vorgeschlagen hat
SQL-Code:
und den Aufruf in Delphi dazu
select <Felder> from <SP_Name>(<InputParameter>) where <Bedingung>;
Delphi-Quellcode:
Ist in der SP kein SUSPEND oder man bekommt genau einen Datensatz, dann muss ich einen anderen Weg in Delphi wählen.
Query.Open;
while not Query.EOF do ........ onkelthom war schon auf dem richtigen Weg. Der Resultwert kann erst nach der Ausführung mit ExecProc abgerufen werden. Vorher gibt es noch keinen Wert. So sollte es funktionieren
Delphi-Quellcode:
Gruß Borwin
IBOStoredProc1.ParamByName('pANZAHL').asInteger; //Parameter den die Prodezur zum ausführen braucht
IBOStoredProc1.Prepare; IBOStoredProc1.ExecProc; // Nach dem Exec iRESULT := IBOStoredProc1.ParamByName('pRESULT').asInteger; // Der Rückgabewert Paremeter den die Prozedur als Result zurück liefert. DM.DataModule1.IBOTransaction1.CommitRetaining; |
Re: Verwendung einer Stored Procedure
Ich weiß nicht, wie das bei IBO ist, aber wäre statt ParamByName nicht FieldByName für den Rückgabewert angebrachter?
|
Re: Verwendung einer Stored Procedure
Zitat:
|
Re: Verwendung einer Stored Procedure
Bei UIB komm ich da auch über die Felder ran, aber was soll' s.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz