praktikantin
Goto Top

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!!!!!! face-wink

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

Content-ID: 127116

Url: https://administrator.de/contentid/127116

Ausgedruckt am: 08.11.2024 um 15:11 Uhr

dog
dog 14.10.2009 um 16:02:39 Uhr
Goto Top
Verrätst du uns auch noch um welche SQL-Implementation es sich handelt?
Praktikantin
Praktikantin 14.10.2009 um 16:47:03 Uhr
Goto Top
Hallo dog (Inuyasha),

tut mir leid hab es vergessen... Es ist für den Sql Server.

Julia
dog
dog 14.10.2009 um 18:26:36 Uhr
Goto Top
Ich kenne mich mit SQL Server zwar nicht aus, aber müsste es nicht eher

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
sein?

Grüße

Max
Praktikantin
Praktikantin 14.10.2009 um 19:02:09 Uhr
Goto Top
Hallo Max,

leider läuft es nicht so... Danke auf jeden Fall für die schnelle Antwort!!!

Julia
MadMax
MadMax 15.10.2009 um 09:50:23 Uhr
Goto Top
Hallo Julia,

vielleicht solltest Du erst mal dafür sorgen, daß @@rowcount > 1 ist, indem Du z.B. ein "select 1" vor die beiden "while @@rowcount > 1" stellst.

Gruß, Mad Max
Praktikantin
Praktikantin 15.10.2009 um 10:25:09 Uhr
Goto Top
Hallo Max,

das werde ich mal versuchen. Danke noch einmal für den Tipp!

Julia
Netzheimer
Netzheimer 20.10.2009 um 08:43:01 Uhr
Goto Top
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