C# 错误必须用表值参数声明标量变量
我不明白我在这里做错了什么。从更新段中,我得到以下错误: 必须声明标量变量“@OrderTestTVP” 这是我的表值参数类型C# 错误必须用表值参数声明标量变量,c#,sql-server,C#,Sql Server,我不明白我在这里做错了什么。从更新段中,我得到以下错误: 必须声明标量变量“@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_Or
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可供尝试,但如果我没记错的话,表变量在表达式中使用时需要别名。@OrderTestTVP TVP_OrderTest READONLY缺少类型声明-对吗?我将该类型创建类型[dbo].[TVP_OrderTest]作为表()。事实上,当我只保留“插入”段时,它不会抛出任何错误