C# 存储过程插入或更新数据表问题?
C# stored procedure insert or update with DataTable problem?
我想用下面的代码添加或更新。我收到以下错误。我应该如何编辑此代码?
Must declare the scalar variable "@UyeID".
Incorrect syntax near the keyword '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
我也想这样问。下面的代码有效,但我只能 add.How 如果存在数据,可以更新吗?
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
@Boris Makhlin,@Dale K 谢谢你的帮助我用下面的代码解决了我的问题
CREATE TYPE [dbo].[BcgTarihiType] AS TABLE(
[UyeID] int NOT NULL,
[BcgTarihi] [nvarchar](30) NULL
)
GO
CREATE PROCEDURE [dbo].[Update_BcgTarihleri]
@tblBcgTarihleri BcgTarihiType READONLY
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO BcgTarihleri b1
USING @tblBcgTarihleri b2
ON b1.UyeID = b2.UyeID AND b1.BcgTarihi = b2.BcgTarihi
WHEN MATCHED THEN
UPDATE SET b1.UyeID = b2.UyeID
,b1.BcgTarihi = b2.BcgTarihi
WHEN NOT MATCHED THEN
INSERT VALUES(b2.UyeID, b2.BcgTarihi);
END
我想用下面的代码添加或更新。我收到以下错误。我应该如何编辑此代码?
Must declare the scalar variable "@UyeID".
Incorrect syntax near the keyword '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
我也想这样问。下面的代码有效,但我只能 add.How 如果存在数据,可以更新吗?
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
@Boris Makhlin,@Dale K 谢谢你的帮助我用下面的代码解决了我的问题
CREATE TYPE [dbo].[BcgTarihiType] AS TABLE(
[UyeID] int NOT NULL,
[BcgTarihi] [nvarchar](30) NULL
)
GO
CREATE PROCEDURE [dbo].[Update_BcgTarihleri]
@tblBcgTarihleri BcgTarihiType READONLY
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO BcgTarihleri b1
USING @tblBcgTarihleri b2
ON b1.UyeID = b2.UyeID AND b1.BcgTarihi = b2.BcgTarihi
WHEN MATCHED THEN
UPDATE SET b1.UyeID = b2.UyeID
,b1.BcgTarihi = b2.BcgTarihi
WHEN NOT MATCHED THEN
INSERT VALUES(b2.UyeID, b2.BcgTarihi);
END