我正在尝试创建一个通过网页更新我的SQL Server表的存储过程。
我正在尝试检查sql表以查看任何现有数据,如果是这样,则使用新数据更新表;否则将新数据插入表中。
但是当我尝试执行它时会返回以下错误:
Msg 102,Level 15,State 1,Procedure usp_TagNumberUpdate,Line 46
'@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
答案 0 :(得分:2)
您错过了SET
关键字。必读:
SET @return = 'UPDATE COMPLETE'
如果没有SET
关键字,则无法更改变量。
另外,如果您使用的是Microsoft SQL Server,MySQL
和SQL
标记在那里做什么?我要删除它们。