【发布时间】:2014-07-25 17:51:01
【问题描述】:
这是我要运行的查询
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”。消息 137,第 15 级,状态 2,第 11 行
必须声明标量变量“@index”。
有人可以帮我正确完成这项工作吗?或者至少为我指明正确的方向?
【问题讨论】:
-
我相信您还需要在 CAST 中添加 VARCHAR 的长度。见link
-
很好的做法,但在这种情况下并不真正需要,只要您不打算超过默认长度 30。
标签: sql sql-server sql-server-2005 sql-server-2005-express