Пожалуйста, попробуйте эту обновленную хранимую процедуру.
Create Table ProjectBilling
(
projectBillID char(6),
TransAmount decimal(16,9),
TransDesc varchar(255),
TransDate datetime,
projectID char(4),
accountMgr char(8),
PRIMARY KEY (projectBillID)
)
go
IF EXISTS (SELECT 1 FROM SYS.PROCEDURES WHERE NAME ='SP_AddUpdateProjectBill')
BEGIN
DROP PROCEDURE SP_AddUpdateProjectBill
END
GO
CREATE PROCEDURE SP_AddUpdateProjectBill
@projectBillID char(6),
@TransAmount decimal(16,9),
@TransDesc varchar(255),
@TransDate datetime,
@projectID char(4),
@accountMgr char(8)
AS
BEGIN
SELECT * INTO ProjectBillingSource FROM ProjectBilling
Insert Into ProjectBillingSource('projectBillID','TransAmount','TransDesc','TransDate','projectID','accountMgr')
VALUES(@projectBillID, @TransAmount, @TransDesc, @TransDate, @projectID, @accountMgr)
MERGE ProjectBilling AS T
USING ProjectBillingSource AS S
ON T.projectBillID = S.projectBillID
WHEN MATCHED THEN
UPDATE SET T.projectBillID = S.projectBillID,
T.TransAmount = S.TransAmount,
T.TransDesc = S.TransDesc,
T.TransDate = S.TransDate,
T.projectID = S.projectID,
T.accountMgr = S.accountMgr
WHEN NOT MATCHED BY TARGET THEN
INSERT(projectBillID,TransAmount,TransDesc,TransDate,projectID,accountMgr) Values(S.projectBillID, S.TransAmount, S.TransDesc, S.TransDate, S.projectID, S.accountMgr);
end
Ваша ошибка ниже не сработала.
CREATE OR ALTER PROCEDURE SP_AddUpdateProjectBill
Заменить на вышеуказанное условие.
IF EXISTS (SELECT 1 FROM SYS.PROCEDURES WHERE NAME ='SP_AddUpdateProjectBill')
BEGIN
DROP PROCEDURE SP_AddUpdateProjectBill
END
GO
CREATE PROCEDURE SP_AddUpdateProjectBill