Begehen Datensätze eingefügt, indem Sie eine gespeicherte Prozedur in Firebird
Habe ich die folgende Gespeicherte Prozedur
SET TERM ^ ;
CREATE OR ALTER PROCEDURE EDIT_FATURA (fat_id integer, mflag integer) as
begin
update inv_lines set mflag = :mflag where fat_id = :fat_id;
delete from inv_lines_temp where 1=1 ;
insert into inv_lines_temp select ID,CODE_ID,ADET,UNIT_PRICE,LINE_NET,LINE_VAT,KDV,LINE_GRAND,CRN
from inv_lines where fat_id = :fat_id;
end^
SET TERM ; ^
GRANT SELECT,UPDATE ON INV_LINES TO PROCEDURE EDIT_FATURA;
GRANT SELECT,INSERT,DELETE ON INV_LINES_TEMP TO PROCEDURE EDIT_FATURA;
GRANT EXECUTE ON PROCEDURE EDIT_FATURA TO SYSDBA;
Und mit dem folgenden code, den ich rufen Sie die gespeicherte Prozedur mit meiner Delphi-Anwendung
dm.q_genel.Close;
dm.q_genel.SQL.Clear;
dm.q_genel.SQL.Add('EXECUTE PROCEDURE EDIT_FATURA(:p1,:p2)');
dm.q_genel.ParamByName('p1').AsInteger := fid;
dm.q_genel.ParamByName('p1').AsInteger := sayi;
dm.q_genel.execute;
Als es ist gesehen, einige Datensätze, die eingefügt zu einer Tabelle gespeicherte Prozedur aufgerufen, die in meinem delphi-Anwendung.
Aber da sind Sie nicht verpflichtet, nach der Ausführung der gespeicherten Prozedur, ich kann nicht auf neu eingefügte Datensätze in meiner Anwendung.
Wie ich Begehen können Zeilen eingefügt, durch die Gespeicherte Prozedur, so dass ich auf Sie zugreifen kann in meiner Anwendung?
Soweit ich weiß, ist es nicht erlaubt, "commit", die in einer Gespeicherten Prozedur
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie eine Transaktion starten, die gespeicherte Prozedur ausführen und dann einen commit oder rollback, wenn Sie alle Fehler. Dies erfolgt in der Anwendung, so würde der code wie folgt Aussehen:
Oder wenn Sie möchten, Lesen Sie die Einträge, bevor der übertragen-so können Sie rollback in bestimmten Fällen können Sie ändern Sie die isolation level in der Datenbank, so können Sie den Datensatz gelesen, natürlich nur Sie oder Ihre app kann es Lesen, niemand sonst kann es Lesen, bis Sie machen einen commit.