gpt4 book ai didi

c# - 错误必须使用表值参数声明标量变量

转载 作者:太空狗 更新时间:2023-10-30 00:10:42 26 4
gpt4 key购买 nike

我没有明白我在这里做错了什么。从更新段,我得到这个错误:

Must declare the scalar variable "@OrderTestTVP".

这是我的表值参数类型

CREATE TYPE [dbo].[TVP_OrderTest] AS TABLE(
[OrderTestId] [int] NULL,
[OrderId] [int] NOT NULL,
[TestCode] [varchar](10) NOT NULL
)
GO

ALTER PROCEDURE [dbo].[TVP_Save_OrderTest]
@OrderTestTVP TVP_OrderTest READONLY
AS
BEGIN
BEGIN TRY
DECLARE @TableOfIdentities TABLE (IdentValue BIGINT, TestCode varchar(10) )
INSERT INTO OrderTest
(
OrderId
,TestCode
)
OUTPUT Inserted.OrderTestId,inserted.TestCode
INTO @TableOfIdentities(IdentValue,TestCode)
SELECT OrderId
,TestCode
FROM @OrderTestTVP
WHERE OrdertestID = 0

UPDATE
OrderTest
SET
OrderId = @OrderTestTVP.OrderId,
TestCode = @OrderTestTVP.TestCode
FROM OrderTest INNER JOIN @OrderTestTVP
ON OrderTest.OrderTestId = @OrderTestTVP.OrderTestId

SELECT * FROM @TableOfIdentities
END TRY
BEGIN CATCH
exec error_catch
END CATCH
END

最佳答案

我会说你必须为连接操作使用表别名:

UPDATE 
OrderTest
SET
OrderId = o.OrderId,
TestCode = o.TestCode
FROM OrderTest INNER JOIN @OrderTestTVP o
ON OrderTest.OrderTestId = o.OrderTestId

我手头没有 SQL 可以尝试,但如果我没记错的话,如果在表达式中使用表变量,则需要别名。

关于c# - 错误必须使用表值参数声明标量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19989562/

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