[英]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.