【发布时间】:2021-07-30 23:09:51
【问题描述】:
我想用下面的代码添加或更新。我收到以下错误。我应该如何编辑这段代码?
必须声明标量变量“@UyeID”。
关键字“ELSE”附近的语法不正确。
我的代码:
CREATE TYPE [dbo].[BcgTarihiType] AS TABLE
(
[UyeID] int NOT NULL,
[BcgTarihi] [nvarchar](30) NULL
)
GO
CREATE PROCEDURE Insert_BcgTarihleri
(@tblBcgTarihleri BcgTarihiType READONLY)
AS
BEGIN
IF EXISTS (SELECT 1 FROM BcgTarihleri
WHERE UyeID = @UyeID AND BcgTarihi = @BcgTarihi)
BEGIN
UPDATE BcgTarihleri
SET UyeID = @UyeID, BcgTarihi = @BcgTarihi
WHERE UyeID = @UyeID
END
ELSE
BEGIN
INSERT INTO BcgTarihleri
VALUES (@UyeID, @BcgTarihi)
END
END
我也想这样问。下面的代码有效,但我只能添加。如果存在数据,如何更新?
CREATE TYPE [dbo].[BcgTarihiType] AS TABLE(
[UyeID] int NOT NULL,
[BcgTarihi] [nvarchar](30) NULL
)
GO
CREATE PROCEDURE Insert_BcgTarihleri
(
@tblBcgTarihleri BcgTarihiType READONLY
)
AS
BEGIN
INSERT into BcgTarihleri (UyeID,BcgTarihi)
SELECT UyeID, BcgTarihi FROM @tblBcgTarihleri;
END
【问题讨论】:
-
您没有在给定的代码中声明变量
@UyeID。也许您想将参数@UyeID带入您的过程Insert_BcgTarihleri? -
这次我将它添加到代码中时出现此错误。 '过程或函数'Insert_BcgTarihleri'需要参数'@UyeID',但未提供。'
-
因为在调用
Insert_BcgTarihleri时,需要传递参数@UyeID -
我将它作为数据表传递? cmd.Parameters.AddWithValue (@tblBcgTarihleri, 数据表);
-
向我们展示您的 C# 代码和don't use
AddWithValue。并且要更新,要么在 id 退出时添加更新,要么使用合并语句。
标签: c# sql-server stored-procedures bulkinsert insert-update