2014-02-23 95 views
0

我可以使用變量作爲現有表的名稱嗎?第一個SELECT工作正常,但第二個生成一個錯誤,提示我正在嘗試創建一個表變量。我想要的只是使用變量作爲現有表的名稱。在select語句中使用變量@table

declare @name varchar(100) 

CREATE TABLE CURVES( 
    ARC VARCHAR(10), 
    RADIUS VARCHAR (10), 
    CENPTid BIGINT, 
    StartPTid BIGINT, 
    EndPTid BIGINT) 

INSERT INTO CURVES 
VALUES ('10.23', '50.22', 5, 6, 8) 

SELECT * FROM CURVES 
set @name='CURVES' 
SELECT * FROM @name 
+1

不,你不能用一個變量作爲現有表的名稱,除非您使用動態SQL。 –

回答

1

這是動態SQL方法,所以

set @name='CURVES' 
exec ('SELECT * FROM '+ @name) 
1

你不能做你想這樣做的事情。

但是,您可以聲明一個表變量,然後填充該表變量並從該表變量中選擇。這樣的事情...

-- Actual Table 

CREATE TABLE CURVES 
( 
ARC VARCHAR(10), 
RADIUS VARCHAR (10), 
CENPTid BIGINT, 
StartPTid BIGINT, 
EndPTid BIGINT 
) 
GO 

-- Populate the table 

INSERT INTO CURVES 
VALUES ('10.23', '50.22', 5, 6, 8) 
GO 


-- Declare the table Variable 

declare @name TABLE 
(
ARC VARCHAR(10), 
RADIUS VARCHAR (10), 
CENPTid BIGINT, 
StartPTid BIGINT, 
EndPTid BIGINT 
) 


INSERT INTO @name  --<-- Populate the Table Variable 
SELECT * FROM CURVES 

SELECT * FROM @name --<-- Now select from table Variable 
相關問題