如何声明一个元素表,以便在将来的查询中使用它?
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
答案 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
由于表格的主键仅限于一个可能的值,因此逻辑上不能超过一行。