[英]T-SQL Variables
如果要引用同一批中多个查询的行集,可以使用哪种类型的对象(在T-SQL中)?
我要强调的是同一批。
非常感谢
创建一个临时表变量并将其插入。
DECLARE @TempCustomer TABLE
(
CustomerId uniqueidentifier,
FirstName nvarchar(100),
LastName nvarchar(100),
Email nvarchar(100)
);
INSERT INTO
@TempCustomer
SELECT
CustomerId,
FirstName,
LastName,
Email
FROM
Customer
WHERE
CustomerId = @CustomerId
对我来说还不够清楚,但是您可以使用批量插入或批量更新来处理multiplus结果。
对于INSERT,您可以执行SELECT来精确返回要插入到另一个表中的字段,例如...
INSERT INTO TableA (ID, Name, Phone) SELECT CustomerID, CustomerName, CustomerPhone FROM TableB
要进行更新,请意识到您的TableA带有“客户”,可以使用TableB信息进行更新,然后您可以...
UPDATE TableA SET TableA.Phone=TableB.Phone FROM TableB WHERE TableA.CustomerID=TableB.CustomerID
这个问题对我来说还不是很清楚,但是一种使用方式是在“会话”表中实现数据:
SessionId - UNIQUEIDENTIFIER is one option
Col1
Col2
...
Coln
UNIQUEIDENTITIER
是最简单的选项,但不是最快的(大键)。 否则,可以使用SEQUENCE
(SQL2012 +)。
使用INSERT .. SELECT:
获得数据生成INSERT .. SELECT:
INSERT INTO SessionTable
(SessionId, Col1, Col2, ... , Coln)
SELECT @SessionId, ....
FROM <various sources>
缺点:
该表已实现,具有SELECT
权限的每个人都可以访问。 如果处理了敏感数据,则必须处理安全性( DENY
)。
必须显式截断/删除表(临时表和表变量将自动删除)
您可能要使用Global Temp表,因为该表的范围超出了当前会话的范围,但是警告它仅在有会话访问它时可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.