Запрос 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