![]() |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Hallo,
was passiert, wenn du z.B. nur 100 Einträge in die DB packst, rattert der dann genauso ? Wie sieht es bei dem Server mit dem RAM und RAM-Verbrauch von FB aus ? Heiko |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Zitat:
Was ich aber noch bräuchte ist eine Übersetzung von
Code:
in die Syntax von Firebird 2.1, also irgendwie sowas:
INSERT INTO SPAM (WORD,ANZAHL) VALUES ('TEST',0) ON DUPLICATE KEY UPDATE ANZAHL=ANZAHL+1;
Code:
Das peil ich nämlich nicht so ganz ;)
UPDATE OR INSERT INTO <table or view> [(<column_list>)]
VALUES (<value_list>) [MATCHING <column_list>] [RETURNING <column_list> [INTO <variable_list>]] |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Hallo Gecko,
alex517 hat dir in seinem Beitrag auf der ersten Seite dieses Threads eine StoredProcedure vorgestellt, die automatisch ein UPDATE anstelle eines INSERT durchführt, wenn der Schlüssel schon existiert. Diese kannst du benutzen, denn die funktioniert bei ellen FB Versionen. So mache ich es bei ähnlicher Problemstellung auch immer. :stupid: |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Zitat:
Ist die ganze Procedure das dann meine SQL Query? also Zeosquery.SQL.text:=Code von Alex? |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Hallo Gecko,
nein, eine SP wird in der Datenbank gespeichert und direkt auf dem Server ausgeführt. Ich benutze kein Zeos, aber gibt es dort keine Komponente für die Verbindung mit StoredProcedures? Eine solche Komponente hat dann in der Regel eine Methode wie "Execute". |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
TZStoredProc oder halt einen Query
|
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Ich hab die StoredProc von Alex jetzt (leicht abgeändert) in IBExpert probiert:
Tabellenaufbau: Word | Anzahl Primary Key Indiziert
SQL-Code:
Es kommt dann beim Ausführen auch ein Abfragefeld für den Parameter (Word), allerdings ist der Rückgabeparameter (anzahl) der mir dann angezeigt wird immer NULLCREATE PROCEDURE SP_SPAM_IU ( word varchar(30)) returns ( anzahl integer) as BEGIN SELECT WORD, ANZAHL FROM SPAM WHERE (WORD = :WORD) INTO :WORD, :ANZAHL; IF (WORD is not NULL) THEN BEGIN UPDATE SPAM SET ANZAHL = :ANZAHL +1 WHERE (WORD = :WORD); END ELSE BEGIN INSERT INTO SPAM ( WORD, ANZAHL) VALUES ( :WORD, 1); ANZAHL = 1; END SUSPEND; END und in die Tabelle wird auch nichts eingefügt |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Hallo,
der Parameter Word wird überschrieben. Ist nie ne gute Idee, einen Parameter als Variable zu missbrauchen mal so hingetippert.
SQL-Code:
CREATE PROCEDURE SP_SPAM_IU (
word varchar(30)) returns ( anzahl integer) as declare variable LocalWord varchar(30); BEGIN SELECT WORD, ANZAHL FROM SPAM WHERE (WORD = :WORD) INTO :LocalWord, :ANZAHL; IF (LocalWord is not NULL) THEN BEGIN UPDATE SPAM SET ANZAHL = :ANZAHL +1 WHERE (WORD = :WORD); Anzahl = Anzahl +1; END ELSE BEGIN INSERT INTO SPAM ( WORD, ANZAHL) VALUES ( :LocalWord, 1); ANZAHL = 1; END SUSPEND; END Heiko |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
@hoika
Jetzt kommt leider "The insert failed because a column definition includes validation constrains. validation error for column WORD, value ***NULL*** :wall: |
Re: Was mache ich falsch? Firebird rattert wie irre auf der
Im 2. Fall ist ja localWord leer, da Word nehmen:
SQL-Code:
CREATE PROCEDURE SP_SPAM_IU (
word varchar(30)) returns ( anzahl integer) as declare variable LocalWord varchar(30); BEGIN SELECT WORD, ANZAHL FROM SPAM WHERE (WORD = :WORD) INTO :LocalWord, :ANZAHL; IF (LocalWord is not NULL) THEN BEGIN UPDATE SPAM SET ANZAHL = :ANZAHL +1 WHERE (WORD = :WORD); Anzahl = Anzahl +1; END ELSE BEGIN INSERT INTO SPAM ( WORD, ANZAHL) VALUES ( :Word, 1); ANZAHL = 1; END SUSPEND; END |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 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