gpt4 book ai didi

sql - 使用输出在合并语句中设置变量

转载 作者:行者123 更新时间:2023-12-02 09:52:12 24 4
gpt4 key购买 nike

我有一个合并语句,它应该始终更新或插入单个记录。我想记住变量中该语句的 ID。它看起来像这样:

DECLARE @int int

MERGE dbo.table AS A
USING (SELECT 'stringtomatch' AS string) AS B ON B.string= A.string
WHEN MATCHED THEN
UPDATE SET somecolumn = 'something'
WHEN NOT MATCHED THEN
INSERT
VALUES ('stringtomatch',
'something')
OUTPUT @int = inserted.ID;

现在这不起作用,因为您不能以这种方式在输出子句中设置@int。我知道我可以创建一个临时表并在输出中使用 INTO @temptable 。但因为我知道它始终是一条记录,所以我希望将 ID 放在 INT 变量中。这可能吗?或者我被迫使用表变量。

如何?

最佳答案

不,您必须将表变量与 OUTPUT 一起使用

但是,你可以这样做...

...
WHEN MATCHED THEN
UPDATE
SET
@int = ID,
somecolumn = 'something'
WHEN NOT MATCHED THEN
INSERT
VALUES ('stringtomatch',
'something');

SET @int = ISNULL(@int, SCOPE_IDENTITY());

"assign in UPDATE"长期以来一直是 SQL Server 的有效语法。请参阅MERGE on MSDN也。两人都这么说:

...
<set_clause>::=

SET
...
@variable=expression

关于sql - 使用输出在合并语句中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16838724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com