创建存储过程时遇到一些问题('end'附近的语法不正确)

时间:2017-02-16 18:15:53

标签: sql-server tsql stored-procedures

更新问题

相应地更改了存储过程,但由于某种原因它没有返回任何值,即使我在最后一个END上方添加了RETURN @UserID。

更新2

好吧没关系,只是实体框架在戏弄我。我刚尝试从SSMS运行存储过程,它运行良好:)

我一直在复制我的其他一些存储过程,但每次我对它们的要求都会改变,它们的内容也会改变。不知道这次我做错了什么,有人可以指出我正确的方向吗?

const int a = 40;
auto &b = a;

我得到的错误是:

  

Msg 102,Level 15,State 1,Procedure GetUserID,Line 45 [Batch Start Line 9]
  'END'附近的语法不正确

1 个答案:

答案 0 :(得分:3)

您错过了脚本中的最终ENDGO之前)。

更正后的脚本:

CREATE PROCEDURE [dbo].[GetUserID]
(   
    -- Add the parameters for the function here
    @UUID varchar(36),
    @SuperID varchar(33)
)
AS
BEGIN
SET NOCOUNT ON
SET ARITHABORT ON

DECLARE @SuperIDExists bit
DECLARE @UserID int

SELECT @SuperIDExists =
    CASE WHEN EXISTS (
    SELECT *
    FROM dbo.[Users] AS u
    WHERE u.SuperID = @SuperID
    )
    THEN CAST(1 as bit)
    ELSE CAST(0 as bit)
END

IF @SuperIDExists = 1
BEGIN
    SELECT @UserID =
    (SELECT u.ID
    FROM dbo.[Users] AS u
    WHERE u.SuperID = @SuperID)
END

ELSE
BEGIN
    SELECT @UserID =
    (SELECT u.ID
    FROM dbo.[Users] as U
    WHERE u.UUID = @UUID)
END
END  --  <-------  ADDED `END`

GO