Erstmal ist in Deiner Procedure ein Fehler:
SUSPEND ist falsch, dies ist nur dazu da Werte Deiner Procedure zurückzuliefern. Du hast aber keine Rückgabeparameter definiert.
Zitat von
Albi:
Code:
CREATE PROCEDURE PROCINSERT (
FNAME VARCHAR (40),
FPLZ CHAR (5),
FORT VARCHAR (40))
AS
BEGIN
Insert into test1 (Name, PLZ, Ort)
Values (:fName,:fPlz,:fOrt);
SUSPEND;
END
Hier mal ein Beispiel für Dein Testprogramm mit einem DataSet. Die Procedure hat nun eine Fehlerbehandlung. Die
SQL Anweisung für Dein DataSet sollte so aussehen:
select status from procinsert(:fname,:fplz,:fort)
Code der Procedure:
Code:
CREATE PROCEDURE PROCINSERT (
FNAME VARCHAR (40),
FPLZ CHAR (5),
FORT VARCHAR (40)
) RETURNS (
STATUS INTEGER
)
AS
BEGIN
STATUS = 0;
Insert into test1 (Name, PLZ, Ort)
Values (:fName,:fPlz,:fOrt);
suspend;
WHEN ANY DO
BEGIN
STATUS = 1;
SUSPEND;
END
END
Und hier das entsprechende Snipset aus Deinem Testprogramm:
Delphi-Quellcode:
If Form1.RadioButton2.Checked = True Then
Begin
IBTMain.StartTransaction;
With MyIBDataSet DO
Begin
ParamByName('fName').Value:= Edit2.Text;
ParamByName('fPLZ').Value:= Edit3.Text;
ParamByName('fOrt').Value:= Edit4.Text;
Open;
if FieldByName('STATUS').AsInteger = 0 then
IBTMain.Commit
else
begin
IBTMain.Rollback;
ShowMessage('Fehler aufgetreten!');
end;
end;
end;
Gruß,
Marcel