Registriert seit: 10. Mär 2005
Ort: Mitten in Deutschland
332 Beiträge
Delphi 10.2 Tokyo Professional
|
Re: Wöchentlich etliche Datensätze updaten
2. Jan 2009, 16:23
Zitat von RWarnecke:
Ich würde das über eine Stored Procedure machen und diese mit den Daten füttern. Die Procedure wird direkt auf dem Server ausgeführt.
Das habe ich nun mal veruscht und die Ticks mittels GetTickcont gezählt. Meine alte Routine benötigt zwischen 62 und 78 Ticks. Bei der Stored Procedure benötige ich jedoch 1953 Tick.
Habe ich hier villeicht ein Fehler bei der Stored Produre gemacht oder warum ist die denn so langsam ?
Hier mal die Procedure
Delphi-Quellcode:
CREATE PROCEDURE DatenUpdate (
Feld1 varchar(20) character set iso8859_1,
Feld2 varchar(4) character set iso8859_1,
Feld3 varchar(35) character set iso8859_1,
Feld4 varchar(20) character set iso8859_1,
Feld5 varchar(10) character set iso8859_1,
Feld6 varchar(50) character set iso8859_1,
Feld7 varchar(30) character set iso8859_1)
as
declare variable maxZaehler integer;
declare variable zaehler integer;
declare variable dsgefunden integer;
begin
/* Procedure Text */
for Select Max(Tabelle1Zaehler)
From Tabelle1
into :maxZaehler
do
DSGefunden = 0;
Zaehler = 0;
for Select Tabelle1Zaehler
From Tabelle1
Where (Feld1 = :Feld1) and (Feld2 = :Feld2) and (Feld5 = :Feld5)
into :Zaehler
do
begin
DSGefunden = 1;
end
if (DSGefunden = 1) then
begin
update Tabelle1
set
Tabelle1ZAEHLER = :Zaehler,
Feld1 = :Feld1,
Feld2 = :Feld2,
Feld3 = :Feld3,
Feld4 = :Feld4,
Feld5 = :Feld5,
Feld6 = :Feld6,
Feld7 = :Feld7,
AKTUELLESDATUM = current_date
where Tabelle1ZAEHLER = :Zaehler;
/*Test = 'update';*/
Suspend;
end
else
begin
maxZaehler = maxZaehler +1;
insert into Tabelle1
(Tabelle1ZAEHLER, Feld1, Feld2, Feld3, Feld4, Feld5, Feld6,
Feld7, AKTUELLESDATUM)
values
(:maxZaehler, :Feld1, :Feld2, :Feld3, :Feld4, :Feld5,
:Feld6, :Feld7, current_date);
/*Test = 'insert';*/
Suspend;
end
end^
SET TERM ; ^
Tanja
|
|
Zitat
|