2014-07-25 77 views
0

這裏添加一個表是我試圖運行一個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 

,我認爲應該建立在一個名爲DB000DB099數據庫每個數據庫中的表查詢,但我得到3個語法錯誤,他們都貼下面

消息102,級別15,狀態1,行18
附近有語法錯誤)「。

消息137,等級15,狀態2,行9
必須聲明標量變量「@index」。

消息137,級別15,狀態2,行11
必須聲明標量變量「@index」。

有人可以幫我解決這個問題嗎?或者至少將我指向正確的方向?

+1

我相信你還需要在添加在你施放VARCHAR的長度。請參閱[鏈接](http://technet.microsoft.com/en-us/library/aa226054(v = sql.80).aspx) – mungea05

+0

好的做法,但不是真的需要在這種情況下,只要你不打算超過默認長度30. – TMNT2014

回答

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 
+0

這工作感謝! – ALupus

相關問題