Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在Update语句的where条件下如何使用表变量_Sql Server - Fatal编程技术网

Sql server 在Update语句的where条件下如何使用表变量

Sql server 在Update语句的where条件下如何使用表变量,sql-server,Sql Server,我的问题是: Declare @ParentIDMap Table (AccTypeID BigInt, FullNo nvarchar(50), Branch BigInt, Code Varchar, ID BigInt) Insert @ParentIDMap (AccTypeID, Branch, FullNo, Code) Values (1, 5, '01111', 2), -- Some other rows (8, 5

我的问题是:

Declare @ParentIDMap Table (AccTypeID BigInt, FullNo nvarchar(50), Branch BigInt, Code Varchar, ID BigInt)

Insert  @ParentIDMap (AccTypeID, Branch, FullNo, Code)
    Values  (1, 5, '01111', 2),
            -- Some other rows
            (8, 5, '04121', 2)

Update  @ParentIDMap
    Set ID =  Book.ID
    From    Accounting.ACNT.Book
    Where   Book.FullNo = @ParentIDMap.FullNo + @ParentIDMap.Code

错误:必须声明标量变量'@ParentIDMap'

您需要在
FROM
子句中引用
@ParentIDMap
,以便能够进行更新(SqlServer在这方面与其他RDBMS不同)。您还可以切换到连接:

Update  p
    Set p.ID =  Book.ID
    From    Accounting.ACNT.Book 
      INNER JOIN @ParentIDMap p
      ON Book.FullNo = p.FullNo + p.Code;