![]() |
AW: SL Update mit StoredProc
Hi Frank,
habe die Zeilen eingefügt. nach Ausführung des SQL Befehls steht in Feld Sortierung aller Datensätze 'Ziffer'. ??? |
AW: SL Update mit StoredProc
OK K-H. Wie kann ich denn den Wert der Spalte Ziffer übergeben?
|
AW: SL Update mit StoredProc
Zitat:
Zitat:
Code:
Nimm doch bitte mal die Kontraproduktiven ' vor und hinter Ziffer heraus, damit die Datenbank die Möglichkeit bekommt, den Inhalt der Spalte Ziffer zu verwenden.
update tbl_gebuehren set sortierung = (select result from SP_Sortstring('Ziffer'))
Also so:
Code:
update tbl_gebuehren set sortierung = (select result from SP_Sortstring(Ziffer))
|
AW: SL Update mit StoredProc
OK,
das funktioniert soweit. Danke. Nun muss ich noch rausfinden bei welchen Datensatz dieser Fehler kommt. Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric overflow, or string truncation. string right truncation. At procedure 'SP_SORTSTRING' line: 46, col: 2. |
AW: SL Update mit StoredProc
Zitat:
deshalb wies ich dich bereits darauf hin, dass du die Länge der Varchar' s überprüfen sollst. Setz doch mal alle VARCHAR auf 100:
Code:
dann wird der Fehler sicher weg sein.
create or alter procedure sp_sortstring (
wert varchar(100)) returns ( result varchar(100)) as declare variable laenge smallint; declare variable pos smallint; declare variable zeichen char(1); declare variable temp varchar(100); declare variable rest varchar(100); ... Frank |
AW: SL Update mit StoredProc
Hallo,
Welche Zeile ist das (bin mit dem iPad hier). Eine genaue Beschreibung wird es erst mit FB 3.0 geben. Jetzt hilft hier nur, Ausgaben in eine Log-Tabelle zu schreiben. Dort steht dann der letzte erfolgreiche gelesene String drin, der nächste ist das Problemkind. Woher kennt mein Vorredner die ganze SP??? Heiko |
AW: SL Update mit StoredProc
Er hat sie
![]() |
AW: SL Update mit StoredProc
Zitat:
Code:
Ich habe auch in der Zeile die Zeile
create or alter procedure sp_sortstring (
wert varchar(100)) returns ( result varchar(100)) as declare variable laenge smallint; declare variable pos smallint; declare variable zeichen char(1); declare variable temp varchar(100); declare variable rest varchar(100); 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 100); 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 else Result = :rest; suspend; end
Code:
von 10 auf 100 geändert.
rest = substring(:wert from :pos for 100);
Walter, du solltest dennoch die SP überprüfen. Ich fülle jetzt die numerischen Teile bis 10 Stellen auf. aus 14.5 mache ich 0000000014.0000000005 Auch das funktioniert evtl. nur korrekt, wenn deine numerischen Teile nie länger als 10 sind. (hab jetzt nicht im Kopf, ob lpad dann abschneidet, den Wert so lässt oder eine Exception wirft. Wenn du z.B. einen Wert 123456789012.3a hättest - hättest du u.U. ein neues Problem. Ich kann nur eine Vorlage liefern, nicht die fehlerfreie Lösung. Frank |
AW: SL Update mit StoredProc
Danke Frank, hatte den Datensatz der den Fehler verursacht hat gefunden und Korrigiert. Lag an solchen Ziffern 50G (9.3a).
Funktioniert alles bestens. Danke nochmals für Deine Mühen. |
AW: SL Update mit StoredProc
Zitat:
Dein Beispiel liefert "0000000050.0000000000G (9.3a)." Das sind 30, die Länge von Result. Das ist arg grenzwertig. Setz die Varchars hoch, wenn du es noch nicht gemacht hast. Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 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