2009-07-10 12 views
0

Ich habe eine gespeicherte Prozedur, die eine Datenbank erstellt (zB: sp_createDB). In ähnlicher Weise muss ich eine 100 von Datenbanken erstellen, die diese verwendet. Also muss ich es in eine Schleife legen. Aber ich weiß nicht, wie man es sqlserver macht. Wie kann ich dies in SQL Server tun.Wie führe ich eine gespeicherte Prozedur fortlaufend aus?

Helfen Sie mir in dieser Hinsicht.

Dank

Antwort

3

Sie verwenden können ...

exec sprocName 
GO 100 

Weitere here. Im Allgemeinen ist es ...

GO [COUNT] 

See, MSDN.

+0

zu starten. Wäre eine While-Schleife nicht schöner? – Tetraneutron

+0

Hallo JP, schaue auf meine Antwort unten - http://StackOverflow.com/Questions/1108017/How-to-execute-a-Stored-Procedure-Continuosly/1108040#1108040 - für eine Lücke, wenn Sie das "GO [ COUNT] "Methode. – Kirtan

+0

@Tetraneutron: In diesem Fall würde ich eigentlich nicht zustimmen, obwohl ich diese Methode nie verwendet habe, es ist eindeutig ziemlich elegant wegen der Einfachheit. Könnte die Programmierer verwirren, die nicht mit der Syntax vertraut sind. –

3

JP's answer ist technisch korrekt (GO [COUNT] kann verwendet werden, um eine Reihe von Anweisungen COUNT mal zu wiederholen), aber es gibt einen logischen Fehler. Ihre gespeicherte Prozedur werden verschiedene Parameter müssen jedes Mal führt sie (wie es einzigartig DBs erstellen muss, oder?), So dass man um mit WHILE wie diese Schleife haben werden -

DECLARE @Counter INT 
SET @Counter = 1 

DECLARE @DBName VARCHAR(20) 

WHILE (@Counter <= 100) 
BEGIN 
    PRINT @Counter 
    @DBName = 'DB' + CAST(@Counter AS VARCHAR) 
    EXEC dbo.CreateDB @DBName 
END 
GO 
+0

bestimmen kann das OP nicht viele Details geben, aber es kann für die Prozedur möglich sein, den Namen der Datenbank zu ermitteln, so ein Parameter möglicherweise nicht notwendig sein. –

+0

Wenn das so ist, dann kann er definitiv JPs Ansatz verwenden. Aber im Idealfall ist das der Fall, also habe ich die Schleife und einen Parameter zur gespeicherten Prozedur hinzugefügt. – Kirtan

1

Eine while-Schleife wäre schön zu nennen es N-mal, wie andere vorgeschlagen haben, aber ...

sIE IHRE VERFAHREN nicht nennen SP_ ...
NICHT IHRE VERFAHREN nENNEN SP_ ...
NICHT IHRE VERFAHREN nENNEN SP_ ...

Innerhalb von Sql Server ist "sp_ ..." für gespeicherte Systemprozeduren reserviert und könnte Leute verwirren, die mit dieser Konvention vertraut sind! Es könnte Probleme verursachen, wenn Sql Server jemals ihre eigene Prozedur "sp_createDB" implementiert. Gespeicherte Prozeduren werden auch etwas langsamer ausgeführt, wenn sie mit dem Präfix sp_ beginnen. Dies liegt daran, dass SQL Server zuerst nach einem System Stored Proc sucht. Als Ergebnis empfiehlt es sich NICHT, gespeicherte Prozeduren mit einem Präfix von sp_

Verwandte Themen