![]() |
Datenbank: ib6 • Version: 6 • Zugriff über: ib
Ist soetwas mit Stored-procedures möglich?...
Hallo,
ich überlege gerade ob ich folgendes mit stored procedures realisieren kann... also eine transaktion wird ausgeführt.... tabelle: transactions tabellenfelder(vereinfacht): id, knd_id, geld, xyz wenn ich jetzt einen neuen datensatz reinschreibe will ich folgendes machen lassen: zählen aller geldbeträge in den transactionsdatensätzen, wo die so eben reingeschriebene knd_id vorkommt. anschließend soll der wert in die kunden datenbank geschrieben werden. irgendwie so?:
Delphi-Quellcode:
könnt emir vll jemand einen einfachen code vorschlagen... :-( ich habe mit stored procedures irgendwie noch nie was vernunftiges gemacht. wobei.... oder sollte ich vll. eher einen trigger bzw generator verwenden um das problem zu lösen?
insert into KUNDEN (PUNKTESTAND) values(:GELDSUMME)
mfg mojo |
Re: Ist soetwas mit Stored-procedures möglich?...
Das ist auf den ersten Blick am einfachsten durch einen AFTER INSERT TRIGGER zu lösen.
Codeschnipsel kann ich dir für die IB SQL-Syntax nicht fertigmachen, weil ich diese dafür zu wenig kenne. Ich vermute jedoch, das es bei den IB Triggern ebenfalls die temporären Tabellen INSERTED und DELETED gibt. Diese enthalten den (die) grade eingefügten, editierten bzw. gelöschten Datensatz (Datensätze). Schöne Grüße, Jens :hi: |
Re: Ist soetwas mit Stored-procedures möglich?...
ok. ich habe jetzt folgendes:
Delphi-Quellcode:
aber mir wird angezeigt, dass die spalte PKT_SUMM nicht bekannt ist... ich will das aber als eine art variable verwenden.
AS
begin if (new.ausg_knd_id IS NOT NULL) then begin select count(AUSGANG.ausg_vpreis) from AUSGANG where AUSGANG.ausg_knd_id = new.AUSG_KND_ID into :PKT_SUMM; UPDATE kunden set KND_PUNKTE=:PKT_SUMM WHERE KND_ID=new.AUSG_KND_ID; end end wie mach ich das? vielen dank! |
Re: Ist soetwas mit Stored-procedures möglich?...
lösung des problems: (vll hilfs wem, wer auch in die stored procedures einsteigen will...)
trigger ruft eine stored procedure auf:
Delphi-Quellcode:
die stored procedure sieht folgendermaßen aus:
AS
begin EXECUTE PROCEDURE SETKNDPKT(new.AUSG_KND_ID); end
Delphi-Quellcode:
;-) sysdba
SET TERM ^ ;
CREATE PROCEDURE SETKNDPKT ( KND_ID INTEGER) AS DECLARE VARIABLE PKT_SUMM INTEGER; begin select count(AUSGANG.ausg_vpreis) from AUSGANG where AUSGANG.ausg_knd_id = :KND_ID into :PKT_SUMM; UPDATE kunden set KND_PUNKTE=:PKT_SUMM WHERE KND_ID=:KND_ID; suspend; end ^ SET TERM ; ^ GRANT SELECT ON AUSGANG TO PROCEDURE SETKNDPKT; GRANT SELECT,UPDATE ON KUNDEN TO PROCEDURE SETKNDPKT; GRANT EXECUTE ON PROCEDURE SETKNDPKT TO SYSDBA; ok. grüßle... ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 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