我試圖創建一個存儲過程,通過網頁更新我的SQL Server表。存儲過程語法錯誤
我想要做的是檢查SQL表來查看任何現有的數據,如果是的話,更新表與新的數據;否則將新數據插入表中。
但是當我嘗試執行它返回此錯誤:
Msg 102, Level 15, State 1, Procedure usp_TagNumberUpdate, Line 46
Incorrect syntax near '@return'.
這裏是我的SQL代碼:
USE [ABCSystem]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_TagNumberUpdate]
@sONbr nvarchar(50) = NULL,
@SOLine nvarchar(50) = NULL,
@SerialNbr nvarchar(50) = NULL,
@StatusCode nvarchar(50) = NULL,
@PackType nvarchar(50) = NULL,
@PalletID nvarchar(50) = NULL,
@PackingListNo nvarchar(50) = NULL,
@ItemCode nvarchar(50) = NULL,
@CrDateTime nvarchar(50) = NULL,
@CrUserID nvarchar(50) = NULL,
@return nvarchar(50) = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SET @return = NULL
IF EXISTS(SELECT sONbr , SOLine
FROM [BCSystem].[dbo].[TAGNUMBERTEST]
WHERE sONbr = @sONbr AND SOLine = @SOLine)
BEGIN
UPDATE [BCSystem].[dbo].[NEW_SO_TAG_NUMBERTEST]
SET SerialNbr = @SerialNbr
,StatusCode = @StatusCode
,PackType = @PackType
,PalletID = @PalletID
,PackingListNo = @PackingListNo
,ItemCode = @ItemCode
,LastUpdDateTime = GETDATE()
,LastUpdUserID = @CrUserID
WHERE sONbr = @sONbr AND SOLine = @SOLine
@return = 'UPDATE COMPLETE'
END
ELSE
BEGIN
BEGIN TRY
BEGIN TRAN
INSERT INTO [ABCSystem].[dbo].[TAGNUMBERTEST]
(SONbr
,SOLine
,SerialNbr
,StatusCode
,PackType
,PalletID
,PackingListNo
,ItemCode
,CrDateTime
,CrUserID)
VALUES
(@sONbr
,@SOLine
,@SerialNbr
,@StatusCode
,@PackType
,@PalletID
,@PackingListNo
,@ItemCode
,GETDATE()
,@CrUserID)
COMMIT TRAN
RETURN ERROR_NUMBER()
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK
RETURN ERROR_NUMBER()
END CATCH
END
END
您是否意識到僅需一次插入即可開始事務是不必要的? –