IF语句中的简单赋值问题

zjroland 2018-03-19 10:27:38
create PROCEDURE [dbo].[up_Teachers_GetUserDemandInfoByUserID]
@UserID int
AS

DECLARE @GroupUserID int,@TeacherUserID int,@Occupation NVARCHAR(50)
SELECT @GroupUserID = UserID FROM Groups_Groups WHERE UserID=@UserID
SELECT @TeacherUserID = UserID FROM Teachers_Teachers WHERE UserID=@UserID
IF (@GroupUserID>0)
@Occupation = '商户'
ELSE IF (@TeacherUserID>0)
@Occupation = '老师'
ELSE
@Occupation = '学生'

这么简单的存储过程竟然报错:
消息 102,级别 15,状态 1,“@Occupation”附近有语法错误。
消息 102,级别 15,状态 1,“@Occupation”附近有语法错误。

这是怎么回事?正确的应该怎么写?
...全文
535 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjroland 2018-03-19
  • 打赏
  • 举报
回复
原来是少了个SET,我把C#的编程习惯用到SQL 了,多谢
zjroland 2018-03-19
  • 打赏
  • 举报
回复
原来是少了个SET,我把C#的编程习惯用到SQL 了,多谢
二月十六 版主 2018-03-19
  • 打赏
  • 举报
回复
CREATE PROCEDURE [dbo].[up_Teachers_GetUserDemandInfoByUserID] @UserID INT
AS
    DECLARE @GroupUserID INT ,
        @TeacherUserID INT ,
        @Occupation NVARCHAR(50)
    SELECT  @GroupUserID = UserID
    FROM    Groups_Groups
    WHERE   UserID = @UserID 
    SELECT  @TeacherUserID = UserID
    FROM    Teachers_Teachers
    WHERE   UserID = @UserID 
    IF ( @GroupUserID > 0 )
        SET @Occupation = '商户'
    ELSE
        IF ( @TeacherUserID > 0 )
            SET @Occupation = '老师'
        ELSE
            SET @Occupation = '学生' 
中国风 2018-03-19
  • 打赏
  • 举报
回复
或用CASE WHEN ...END e.g.
create PROCEDURE [dbo].[up_Teachers_GetUserDemandInfoByUserID]
@UserID int
AS

DECLARE @GroupUserID int,@TeacherUserID int,@Occupation NVARCHAR(50)
SELECT @GroupUserID = UserID FROM Groups_Groups WHERE UserID=@UserID 
SELECT @TeacherUserID = UserID FROM Teachers_Teachers WHERE UserID=@UserID 

SET @Occupation=CASE WHEN @GroupUserID>0 THEN '商户' WHEN @TeacherUserID>0 THEN '老师' ELSE '学生'  END

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧