Запрос SQL Server 2005 Express, который добавит таблицу для каждой базы данных

Вот запрос, который я пытаюсь выполнить

DECLARE @str VARCHAR(10)
DECLARE @index int
DECLARE @SQL VARCHAR(100)
DECLARE @SQL2 VARCHAR(300)
DECLARE @SQL3 VARCHAR(400)

SET @str = 'DB'
SET @index = 0

WHILE @index < 100
BEGIN
    SET @SQL = 'use ' + @str + CASE 
                   WHEN @index < 10 THEN '00'
                   WHEN @index < 100 THEN '0'
                   ELSE ''
                   END + CAST(@index as VARCHAR)
    EXEC(@SQL)
    GO

    CREATE TABLE Persons
    (
        PersonID int,
        LastName varchar(255),
        FirstName varchar(255),
        Address varchar(255),
        City varchar(255)
    );

    set @index = @index + 1
END

я думаю, что следует создать таблицу для каждой базы данных в базах данных с именем DB000 в DB099 но я получаю 3 ошибки синтаксиса, они размещены ниже

Сообщение 102, уровень 15, состояние 1, строка 18
Неверный синтаксис рядом с ')'.

Сообщение 137, уровень 15, состояние 2, строка 9
Необходимо объявить скалярную переменную "@index".

Msg 137, уровень 15, состояние 2, строка 11
Необходимо объявить скалярную переменную "@index".

Может кто-нибудь помочь мне сделать эту работу правильно? Или, по крайней мере, указать мне в правильном направлении?

1 ответ

Решение

Это должно работать, если вам нужно создать эту таблицу в базах данных с именами от DB000 до DB099:

       DECLARE @str VARCHAR(10)
       DECLARE @index int
       DECLARE @SQL VARCHAR(100)
       DECLARE @SQL2 VARCHAR(300)
       DECLARE @SQL3 VARCHAR(400)


       SET @str = 'DB'
       SET @index = 0

       WHILE @index < 100
       BEGIN
       SET @SQL = @str + CASE 
               WHEN @index < 10 THEN '00'
               WHEN @index < 100 THEN '0'
               ELSE ''
       END + CAST(@index as VARCHAR)
       PRINT @SQL
       -- EXEC(@SQL)

       SET @SQL2 = 'CREATE TABLE ' + @SQL + '..Persons
         (
          PersonID int,
          LastName varchar(255),
          FirstName varchar(255),
          Address varchar(255),
          City varchar(255)
          );'
        EXEC(@SQL2)

       set @index = @index + 1
       END
Другие вопросы по тегам