![]() |
Datenbank: Firebird • Version: 2.5.4 • Zugriff über: IBO
SL Update mit StoredProc
Hallo,
geht so was:
Delphi-Quellcode:
Der Befehl wird ausgeführt aber die Spalte Sortierung ist null.
update tbl_gebuehren set sortierung = (select result from SP_Sortstring('Ziffer'))
|
AW: SL Uodate mit StoreOroc
Liefert die SP auch ein Feld mit der Bezeichnung "result" zurück?
SUSPEND vergessen? |
AW: SL Uodate mit StoreOroc
Hallo,
habe von FireBird keine Ahnung, bei den mir bekannten Datenbanken würde ich es in der Form machen:
Code:
'Ziffer' dürfte in Deinem Beispiel bedeuten, dass die SP_Sortstring aus der Zeichenfolge 'Ziffer' die Sortierung erstellt, also bei allen Datensätzen zum gleichen Ergebnis kommt. Du möchtest aber sicherlich die Sortierung aus dem Inhalt der Spalte Ziffer gebildet bekommen.
update tbl_gebuehren set sortierung = SP_Sortstring(Ziffer);
|
AW: SL Uodate mit StoreOroc
Ja das kann funktionieren, aber deine SP scheint mir ein wenig unangepasst zu sein.
Normal wäre mindestens ein (individueller) Eingabewert, wenn 'Ziffer' genutzt wird um Zufallszahlen zu generieren sollte es reichen. Wird denn überhaupt ein Wert zurück gegeben? Aber warum so, die SP kann den Update doch selbst durchführen!? Gruß K-H |
AW: SL Uodate mit StoreOroc
Zitat:
![]() Wenn die SP das Update selbst ausführt, geht es aber nur nach dem Motto: "Alles oder nichts", also für die gesamte Tabelle. Dies ist bei der erstmaligen Befüllung der Spalte Sortierung sicherlich sinnvoll. Bei allen später hinzukommenden oder geänderten Datensätzen aber nicht, da sollte man die SP lieber in einen entsprechenden Datenbanktrigger legen, der nur bei Änderungen der Spalte Ziffer für eine Neubefüllung der Spalte Sortierung, des konkret betroffenen Datensatzes, sorgt. |
AW: SL Update mit StoredProc
Wenn ich mich nicht verlesen habe, dann liefert die SP von DataSpider für 'Ziffer' NULL. Für '1Ziffer' sieht das schon ganz anders aus.
Gruß K-H |
AW: SL Update mit StoredProc
Hi,
die SP berücksichtigt nicht, dass es auch Werte ohne Zahl gibt. Du musst das Ende der SP noch mal ändern:
Code:
die 2 Zeilen vor dem supend hinzufügen
...
if (coalesce(:temp, '') <> '') then begin -- Zahl vor Punkt auffüllen pos = position('.', :temp); if (:pos = 0) then result = lpad(:temp, 10, '0')||'.'||lpad('0', 10, '0'); else result = lpad(substring(:temp from 1 for :pos -1), 10, '0')||'.'|| lpad(substring(:temp from :pos + 1 for :laenge), 10, '0'); result = :result||coalesce(:rest, ''); end else Result = :rest; suspend; Frank |
AW: SL Update mit StoredProc
Hallo,
hier mal zum besseren Verständnis dir SP:
Delphi-Quellcode:
Ich möchte einmalig alle Datensätze das Feld Sortierung füllen.
begin
result = null; laenge = char_length(:wert); if (:laenge > 0) then begin pos = 1; while (:pos <= :laenge) do begin zeichen = substring(:wert from :pos for 1); if (:zeichen in ('0','1','2','3','4','5','6','7','8','9', '.')) then temp = coalesce(:temp, '')||:zeichen; else begin -- Rest hinten rest = substring(:wert from :pos for 10); break; end pos = :pos + 1; end end if (coalesce(:temp, '') <> '') then begin -- Zahl vor Punkt auffüllen pos = position('.', :temp); if (:pos = 0) then result = lpad(:temp, 10, '0')||'.'||lpad('0', 10, '0'); else result = lpad(substring(:temp from 1 for :pos -1), 10, '0')||'.'|| lpad(substring(:temp from :pos + 1 for :laenge), 10, '0'); result = :result||coalesce(:rest, ''); end suspend; end Später wir beim Ändern oder Neuanlegen eines Datensatzes ein Trigger benutzt. |
AW: SL Update mit StoredProc
Nicht daß es untergeht:
Zitat:
|
AW: SL Update mit StoredProc
Zitat:
Code:
wenig sinnvoll, da hier für alle Datensätze der Tabelle die Sortierung anhand der konstanten Zeichenfolge 'Ziffer' ermittelt wird und nicht anhand des Inhaltes der Spalte Ziffer. Bei '1Ziffer' mag also durchaus was anderes herauskommen, als bei 'Ziffer', aber es wird für alle Datensätze der Tabelle der gleiche Wert sein, Null wird also für alle Datensätze durch einen anderen, aber immer gleichen Wert, ersetzt.
update tbl_gebuehren set sortierung = (select result from SP_Sortstring('Ziffer'))
Oder ist die Funktionalität von Firebird so anders, dass bei SP_Sortstring('Ziffer') hier tatsächlich der Inhalt der Spalte Ziffer genutzt wird? Dies würde mich doch sehr wundern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:08 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 by Thomas Breitkreuz