微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 关键字’PROCEDURE’附近的语法不正确

sql Server中执行以下语句
IF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SP_CandidateRegistration]') AND type in (N'P',N'PC'))
BEGIN
CREATE PROCEDURE [dbo].[SP_CandidateRegistration]
    (
            @UserName VARCHAR(50),@Password VARCHAR(50),@EmailID VARCHAR(50),@TestId int,@IsActiveUser INTEGER,@USER_ID INTEGER OUTPUT
    )
    AS
    DECLARE @UserName VARCHAR(50)
    DECLARE @Password VARCHAR(50)
    DECLARE @EmailID VARCHAR(50)
    DECLARE @TestId int
    DECLARE @IsActiveUser INTEGER       
    DECLARE @USER_ID INTEGER 

    INSERT INTO [dbo].[IER_CandidateRegistration](User_Name,Password,EmailId,Test_Id,is_active )
    VALUES (@UserName,@Password,@EmailID,@TestId,@IsActiveUser) 
    select @USER_ID=@@identity
    RETURN
END
GO

sql Server 2008中执行后出错

Msg 156,Level 15,State 1,Line 3
Incorrect Syntax near the keyword ‘PROCEDURE’.

解决方法

您可以在子批处理中运行CREATE,该批处理仅在不是EXISTS的情况下编译和执行.

您将需要首先修复过程中的错误(为什么要尝试声明与参数同名的变量也使用ScopE_IDENTITY()而不是@@ IDENTITY)但是类似于

IF  NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SP_CandidateRegistration]') AND type in (N'P',N'PC'))
BEGIN
EXEC('
     CREATE PROCEDURE [dbo].[SP_CandidateRegistration] (@UserName     VARCHAR(50),@Password     VARCHAR(50),@EmailID      VARCHAR(50),@TestId       INT,@USER_ID      INTEGER OUTPUT)
    AS
        INSERT INTO [dbo].[IER_CandidateRegistration]
                    (User_Name,is_active)
        VALUES      (@UserName,@IsActiveUser)

        SELECT @USER_ID = ScopE_IDENTITY()

RETURN 
    ')
END

原文地址:https://www.jb51.cc/mssql/77151.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐