以下是我尝试运行的查询
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个语法错误
Msg 102,Level 15,State 1,Line 18
&#39;)&#39;附近的语法不正确。Msg 137,Level 15,State 2,Line 9
必须声明标量变量&#34; @ index&#34;。Msg 137,Level 15,State 2,Line 11
必须声明标量变量&#34; @ index&#34;。
有人可以帮助我正确地完成这项工作吗?或者至少指出我正确的方向?
答案 0 :(得分:0)
如果您需要在名为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