更新不存在的表变量

Cas*_*ton 1 sql sql-server sql-server-2017

UPDATE 
    @Customer
SET 
    ValidaitonAction = 1
WHERE NOT EXISTS
    (SELECT 1 FROM DMScustomerupload WHERE AccountNumber = @Customer.AccountNumber)
Run Code Online (Sandbox Code Playgroud)

@CustomerTABLE变量在哪里:

DECLARE @Customer TABLE ( ID int,
                        ValidaitonAction int,
                        ... other columns))
Run Code Online (Sandbox Code Playgroud)

在最后一行,我得到

必须声明标量变量@Customer

Gor*_*off 6

您需要一个表别名:

UPDATE c
    SET ValidationAction = 1
    FROM @Customer c
    WHERE NOT EXISTS (SELECT 1 FROM DMScustomerupload cu WHERE cu.AccountNumber = c.AccountNumber);
Run Code Online (Sandbox Code Playgroud)

SQL Server会自动将以a开头的任何内容解释@为变量(某种形式)。表别名是另一回事,因此找不到匹配项。