25. september 2005 - 15:32 
												Der er
									26  kommentarer													og 					1  løsning									 
									
		 
		
			
Tøm tabeller. 
			Hej. Jeg er newbie vedr. stored procedures, og ønsker derfor lidt hjælp til at lave dette: I forbindelse med en hel del tests, har jeg behov for at tømme mange tabeller, og nulstille identity. Det jeg forestiller mig er, at en stored procedure kaldes, og tømmer alle tabeller hvis navn ikke starter med 'sys' eller 'tbl'. Kan dette laves? MVH JoBless
					
		
	 
                            
Annonceindlæg fra Systematic 
 
 
	
		
								
					
				25. september 2005 - 15:51  
				#1 
			 				 
						
		 
		
			prøv: CREATE PROCEDURE CLEANUP AS DECLARE @name  VARCHAR(32) DECLARE c CURSOR FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND NOT TABLE_NAME LIKE 'sys%' AND NOT TABLE_NAME LIKE 'tbl%' OPEN c FETCH NEXT FROM c INTO @name WHILE @@FETCH_STATUS = 0 BEGIN        EXEC('DROP TABLE ' + @name)        FETCH NEXT FROM c INTO @name END CLOSE c DEALLOCATE c GO
		
		
	 
	
		
								
					
				25. september 2005 - 15:52  
				#2 
			 				 
						
		 
		
			husk at teste på en test database først inden du sletter !!!!!!!!!!!!!!!!!!!
		
		
	 
	
		
								
					
				25. september 2005 - 15:56  
				#3 
						
		 
		
			Jeg tester lige.... Betyder 'DROP TABLE' at den tømmer tabellen, eller at den sletter tabellen ?
		
		
	 
	
		
								
					
				25. september 2005 - 16:00  
				#4 
			 				 
						
		 
		
			sletter erstat med DELETE FROM hvis du kun vil fjerne data
		
		
	 
	
		
								
					
				25. september 2005 - 16:04  
				#5 
						
		 
		
			ok, vil den så også nulstille Identity's?
		
		
	 
	
	
	
		
								
					
				25. september 2005 - 16:53  
				#6 
			 				 
						
		 
		
			jeg tror at du er nødt til at slette tabellen og oprette igen for at nulstille identity men jeg er ikke sikker så prøv
		
		
	 
	
		
								
					
				25. september 2005 - 16:54  
				#7 
			 				 
						
		 
		
			PS: hvis du har brug for at nulstille en identity så bør feltet sikkert ikke     være identity
		
		
	 
	
		
								
					
				25. september 2005 - 16:58  
				#8 
						
		 
		
			Hvad er den letteste måde at eksekvere den manuelt på ?
		
		
	 
	
		
								
					
				25. september 2005 - 17:01  
				#9 
			 				 
						
		 
		
			EXEC CLEANUP
		
		
	 
	
		
								
					
				25. september 2005 - 17:01  
				#10 
			 				 
						
		 
		
			eller bare CLEANUP
		
		
	 
	
		
								
					
				25. september 2005 - 17:01  
				#11 
			 				 
						
		 
		
			erstat evt. EXEC('DROP TABLE ' + @name) med PRINR @name for at se hvad der sker først :-)
		
		
	 
	
		
								
					
				25. september 2005 - 17:11  
				#12 
						
		 
		
			Den tømmer fint tabellerne, med undetagelse af en enkelt som hedder 'Disk'. Det er sikkert et reserveret ord, hvad skal jeg afgrænse med, for at få denne tabel med ?
		
		
	 
	
		
								
					
				25. september 2005 - 17:14  
				#13 
			 				 
						
		 
		
			prøv med [Disk]
		
		
	 
	
		
								
					
				25. september 2005 - 17:18  
				#14 
						
		 
		
			Fint, dog nulstilles Identity ikke, men det overlever jeg nu nok.
		
		
	 
	
		
								
					
				25. september 2005 - 17:18  
				#15 
						
		 
		
			Lægger du lige et svar?
		
		
	 
	
		
								
					
				25. september 2005 - 17:19  
				#16 
			 				 
						
		 
		
			kommer her
		
		
	 
	
		
								
					
				25. september 2005 - 17:22  
				#17 
						
		 
		
			Tak for den speedy hjælp ;=)
		
		
	 
	
		
								
					
				28. september 2005 - 16:35  
				#18 
						
		 
		
			hvis du bruger "truncate tabelNavm" så bliver tabellen tømt, og ID'er starter forfra.
		
		
	 
	
		
								
					
				29. september 2005 - 08:08  
				#19 
						
		 
		
			Hvordan kan jeg sende en parameter med til min stored procedure, således at jeg f.eks. kan bruge denne i den sql-statement som bruges i min SP ?
		
		
	 
	
		
								
					
				29. september 2005 - 08:13  
				#20 
						
		 
		
			Opgaven er at jeg gerne vil have udvidet ovenstående SP, således at den tømmer tabeller som nu, men SP skal modtage et ID, og slå op i en enkelt tabel (en->mange) og slette posterne i alle tabellerne (som nu), hvor feltet ComputerID matcher de oversatte ID'er i opslaget. Er det helt volapyk ?
		
		
	 
	
		
								
					
				29. september 2005 - 22:06  
				#21 
			 				 
						
		 
		
			du sender vel bare en parameter over til din SP og bruger den til at sætte en WHERE på en DELETE
		
		
	 
	
		
								
					
				30. september 2005 - 06:51  
				#22 
						
		 
		
			ja, men parameteren skal bruges til at slå værdierne op som skal bruges i min where clause. Hvordan sender jeg en parameter med?
		
		
	 
	
		
								
					
				30. september 2005 - 07:38  
				#23 
			 				 
						
		 
		
			CREATE PROCEDURE CLEANUP @in INTEGER AS og EXEC('xxxxxxxx xxxx ' + @name + ' WHERE id = ' + @id)
		
		
	 
	
		
								
					
				30. september 2005 - 07:53  
				#24 
						
		 
		
			og i sql: cleanup(15) ??
		
		
	 
	
		
								
					
				30. september 2005 - 08:17  
				#25 
			 				 
						
		 
		
			cleanup 15 eller exec cleanup 15 tror jeg (jeg kalder normalt sp fra programmer)
		
		
	 
	
		
								
					
				30. september 2005 - 10:08  
				#26 
						
		 
		
			Kan den ene sp godt kalde den anden, med en parameter?
		
		
	 
	
		
								
					
				30. september 2005 - 10:16  
				#27 
			 				 
						
		 
		
			ja
		
		
	 
	
		
	
		
		
		
			
			Computerworld tilbyder specialiserede kurser i database-management