如何声明标量 table 类型?

How to declare scalar table type?

我有一个这样的存储过程;

ALTER PROCEDURE [dbo].[crudValues]
    @tblValue as dbo.tblValue READONLY
AS
BEGIN
    SET NOCOUNT ON;
    UPDATE Value SET Value.Value = @tblValue.Value, Value.LastUpdate = @tblValue.LastUpdate FROM Value INNER JOIN @tblValue ON Value.ID = @tblValue.ID
END

当我执行这个存储过程时,它给我错误

Msg 137, Level 16, State 1, Procedure crudValues, Line 21
Must declare the scalar variable "@tblValue".
Msg 137, Level 16, State 1, Procedure crudValues, Line 21
Must declare the scalar variable "@tblValue".
Msg 137, Level 16, State 1, Procedure crudValues, Line 21
Must declare the scalar variable "@tblValue".

如何声明标量 table 类型。或者我该如何解决这个错误?

将 table 变量括在双引号或方括号中(但不在连接中)或在查询中为 table 变量使用别名:

ALTER PROCEDURE [dbo].[crudValues]
    @tblValue dbo.tblValue READONLY
AS
BEGIN
    SET NOCOUNT ON;
    UPDATE Value 
    SET Value.Value = t.Value, Value.LastUpdate = t.LastUpdate 
    FROM Value INNER JOIN @tblValue t ON Value.ID = t.ID
END

带引号标识符的备选方案如下所示:[@tblValue].ID"@tblValue".ID

您需要为 table 添加别名。此代码产生相同的错误:

DECLARE @Table TABLE
(
        Field INT
)

SELECT 
    @Table.Field
FROM @Table