[英]SQL Server Output Clause into a scalar variable
是否有任何“簡單”的方法可以做到這一點,或者我需要使用“OUTPUT ... INTO”語法傳遞一個表變量?
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
你需要一個表變量,它可以很簡單。
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
一年之后......如果您需要的是獲取表格的自動生成ID,您可以
SELECT @ReportOptionId = SCOPE_IDENTITY()
否則,您似乎無法使用表格。
稍后但仍然值得一提的是,您還可以使用變量在UPDATE的SET子句或SELECT字段中輸出值;
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
在上面的示例中,@ val1具有before值,而@ val2具有after值,但我懷疑觸發器的任何更改都不在val2中,因此在這種情況下您必須使用輸出表。 除了最簡單的情況之外,我認為輸出表在代碼中也更具可讀性。
一個地方非常有用,如果你想把一個列變成以逗號分隔的列表;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
您可以使用@@IDENTITY
獲取最后插入的 id。
DECLARE @someInt int
INSERT INTO MyTable2(AIntColumn)
VALUES(12)
SET @someInt = @@IDENTITY;
假設您的表有一個主鍵,您希望將其設置為所述變量。
CREATE TABLE MyTable2(
[ID] [INT] IDENTITY(1,1),
[aIntColumn] [INT]
)
CREATE TABLE MyTable3(
[ID] [INT] IDENTITY(1,1),
[newInt] [INT],
[FK_int] [INT]
)
然后您可以在腳本的下一部分中使用它,例如
DECLARE @someInt INT;
INSERT INTO MyTable2(AIntColumn)
VALUES(12)
SET @someInt = @@IDENTITY;
--do something else
DECLARE @someInt2 INT;
INSERT INTO MyTable3(newInt, FK_int)
VALUES(101, @someInt)
SET @someInt2 = @@IDENTITY;
SELECT @someInt AS 'First Inserted ID ', @someInt2 AS 'Second inserted ID';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.