Prozedur mit Rowcount und Loops
Hallo alle zusammen,
ich habe ein kleines Problem. Ich habe ein Sql - Update erstellt dass alle nicht numerische Charaktere mit nichts ersetzt. Wenn ich diese querys einzeln laufe dann funktioniert alles prima. Wenn ich die 2 aber zusammen laufe dann passiert nichts. Ich will diese 2 Abfragen in einer Prozedur einfugen und das habe ich schon aber wie gesagt es klappt nicht. Ich mache etwas Falsch mit den Loops... Bitte hilft mir weiter!!!!!!
Der Code ist -->
Vielen dank!!!
Julia
ich habe ein kleines Problem. Ich habe ein Sql - Update erstellt dass alle nicht numerische Charaktere mit nichts ersetzt. Wenn ich diese querys einzeln laufe dann funktioniert alles prima. Wenn ich die 2 aber zusammen laufe dann passiert nichts. Ich will diese 2 Abfragen in einer Prozedur einfugen und das habe ich schon aber wie gesagt es klappt nicht. Ich mache etwas Falsch mit den Loops... Bitte hilft mir weiter!!!!!!
Der Code ist -->
while @@rowcount > 0
update inv
set inv.inv_number = replace(inv.inv_number, substring(inv.inv_number, patindex('%[^0-9]%', inv.inv_number), 1), '')
--select inv_number, replace(inv.inv_number, substring(inv.inv_number, patindex('%[^0-9]%', inv.inv_number), 1), '')
from exp_invoice_temp as inv
where inv.retailer_id = 1282
-- and sender_id = 2665
and inv.seq is null
and patindex('%[^0-9]%', inv.inv_number) <> 0
while @@rowcount > 0
update r
set r.ref_inv_number = replace(r.ref_inv_number, substring(r.ref_inv_number, patindex('%[^0-9]%', r.ref_inv_number), 1), '')
--select *
from exp_invoice_temp as inv
inner join exp_inv_relevant_inv as r
on inv.exp_inv_id = r.exp_inv_id
where inv.retailer_id = 1282
-- and inv.sender_id = 2665
and patindex('%[^0-9]%', r.ref_inv_number) <> 0
and inv.seq is null
Vielen dank!!!
Julia
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 127116
Url: https://administrator.de/contentid/127116
Ausgedruckt am: 08.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
Ich kenne mich mit SQL Server zwar nicht aus, aber müsste es nicht eher
sein?
Grüße
Max
while @@rowcount > 0
BEGIN
update inv
set inv.inv_number = replace(inv.inv_number, substring(inv.inv_number, patindex('%[^0-9]%', inv.inv_number), 1), '')
from exp_invoice_temp as inv
where inv.retailer_id = 1282
and inv.seq is null
and patindex('%[^0-9]%', inv.inv_number) <> 0
update r
set r.ref_inv_number = replace(r.ref_inv_number, substring(r.ref_inv_number, patindex('%[^0-9]%', r.ref_inv_number), 1), '')
from exp_invoice_temp as inv
inner join exp_inv_relevant_inv as r
on inv.exp_inv_id = r.exp_inv_id
where inv.retailer_id = 1282
and patindex('%[^0-9]%', r.ref_inv_number) <> 0
and inv.seq is null
END
Grüße
Max
Hallo Julia
while @@rowcount > 0
update inv
set inv.inv_number = replace(inv.inv_number,
substring(inv.inv_number, patindex('%[^0-9]%',
inv.inv_number), 1), '')
--select inv_number, replace(inv.inv_number,
substring(inv.inv_number, patindex('%[^0-9]%',
inv.inv_number), 1), '')
from exp_invoice_temp as inv
where inv.retailer_id = 1282
-- and sender_id = 2665
and inv.seq is null
and patindex('%[^0-9]%', inv.inv_number) <> 0
...
Ich glaube, dein Problem liegt daran, dass @@rowcount die Anzahl betroffener Zeilen zählt, somit also nach dem Statement stehen müsste.
Was möchtest du denn mit Rowcount zählen?
Der Ansatz von dog mit BEGIN und END nach dem WHILE ist schon mal gut. Gehört sich so.
Gruß, Netzheimer
while @@rowcount > 0
update inv
set inv.inv_number = replace(inv.inv_number,
substring(inv.inv_number, patindex('%[^0-9]%',
inv.inv_number), 1), '')
--select inv_number, replace(inv.inv_number,
substring(inv.inv_number, patindex('%[^0-9]%',
inv.inv_number), 1), '')
from exp_invoice_temp as inv
where inv.retailer_id = 1282
-- and sender_id = 2665
and inv.seq is null
and patindex('%[^0-9]%', inv.inv_number) <> 0
...
Ich glaube, dein Problem liegt daran, dass @@rowcount die Anzahl betroffener Zeilen zählt, somit also nach dem Statement stehen müsste.
Was möchtest du denn mit Rowcount zählen?
Der Ansatz von dog mit BEGIN und END nach dem WHILE ist schon mal gut. Gehört sich so.
Gruß, Netzheimer