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-Key: 127116

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

Printed on: April 25, 2024 at 22:04 o'clock

Member: dog
dog Oct 14, 2009 at 14:02:39 (UTC)
Goto Top
Verrätst du uns auch noch um welche SQL-Implementation es sich handelt?
Member: Praktikantin
Praktikantin Oct 14, 2009 at 14:47:03 (UTC)
Goto Top
Hallo dog (Inuyasha),

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

Julia
Member: dog
dog Oct 14, 2009 at 16:26:36 (UTC)
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
Member: Praktikantin
Praktikantin Oct 14, 2009 at 17:02:09 (UTC)
Goto Top
Hallo Max,

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

Julia
Member: MadMax
MadMax Oct 15, 2009 at 07:50:23 (UTC)
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
Member: Praktikantin
Praktikantin Oct 15, 2009 at 08:25:09 (UTC)
Goto Top
Hallo Max,

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

Julia
Member: Netzheimer
Netzheimer Oct 20, 2009 at 06:43:01 (UTC)
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