如何在sql中声明标量表?

时间:2014-01-20 09:21:59

标签: sql-server tsql

如何声明一个元素表,以便在将来的查询中使用它?

DECLARE @Emp TABLE
(
  ID BIGINT NULL,
  CompanyID BIGINT NULL
)

INSERT INTO @EMP
SELECT ID,CompanyID FROM Emp WHERE PIN = 123

SELECT COMPANYID FROM COMPANY WHERE ID = @Emp.CompanyID 

2 个答案:

答案 0 :(得分:1)

你做不到。每个定义的表包含(可能)无限数量的元素。但是,您总是可以这样做:

DECLARE @CompanyID BIGINT
SET @CompanyID = (SELECT TOP 1 CompanyID FROM @Emp WHERE ...)

顺便说一句,以下行不正确,因为WHERE子句不完整。

SELECT COMPANYID FROM COMPANY WHERE @Emp.CompanyID 

答案 1 :(得分:0)

如果您打算创建一个最多只能存储一行的表变量,您可以这样做:

DECLARE @Emp TABLE
(
  ID BIGINT NULL,
  CompanyID BIGINT NULL,
  Lock char(1) not null default 'X' primary key check(Lock='X')
)

INSERT INTO @EMP (ID,CompanyID)
SELECT ID,CompanyID FROM Emp WHERE PIN = 123

由于表格的主键仅限于一个可能的值,因此逻辑上不能超过一行。