как выполнять хранимую процедуру непрерывно? - PullRequest
0 голосов
/ 10 июля 2009

У меня есть хранимая процедура, которая создает базу данных (например, sp_createDB). Аналогичным образом я должен создать сотни баз данных, используя эту. Так что я должен поставить это в цикл. Но я не знаю, как это сделать sqlserver. Как я могу сделать это в sqlserver.

Помоги мне в этом.

Спасибо

Ответы [ 3 ]

3 голосов
/ 10 июля 2009

Ответ JP является технически правильным (GO [COUNT] может использоваться для повторения пакета операторов COUNT раз), но есть логическая ошибка. Ваша хранимая процедура будет нуждаться в различных параметрах каждый раз, когда она будет выполняться (так как она должна создавать уникальные БД, верно?), Поэтому вам придется циклически использовать WHILE, как это -

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
3 голосов
/ 10 июля 2009

Вы можете использовать ...

exec sprocName
GO 100

Подробнее здесь . В общем, это ...

GO [COUNT]

См., MSDN .

1 голос
/ 10 июля 2009

Цикл while был бы неплохо назвать его N раз, как предлагали другие, но ...

НЕ НАЗВАТЬ ВАШИ ПРОЦЕДУРЫ SP_ ...
НЕ НАЗЫВАЙТЕ СВОИ ПРОЦЕДУРЫ SP_ ...
НЕ НАЗЫВАЙТЕ СВОИ ПРОЦЕДУРЫ SP_ ...

В Sql Server "sp_ ..." зарезервировано для системных хранимых процедур и может сбить с толку людей, знакомых с этим соглашением! Это может вызвать проблемы, если Sql Server когда-либо реализует свою собственную процедуру sp_createDB. Кроме того, хранимые процедуры будут работать немного медленнее, если они будут начинаться с префикса sp_. Это связано с тем, что SQL Server сначала будет искать системный хранимый процесс. В результате НЕ рекомендуется запускать хранимые процедуры с префиксом sp_

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...