在select语句中使用变量@table

时间:2014-02-23 23:01:41

标签: sql sql-server sql-server-2008 tsql ssms

我可以使用变量作为现有表的名称吗?第一个SELECT工作正常,但第二个生成错误,表明我正在尝试创建表变量。我想要的只是使用一个变量作为现有表的名称。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这是动态SQL方法,所以

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