请教存储过程写法

myemail_bake 2010-11-01 07:56:58
SET

ANSI_NULLS ON
GO

SET

QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[Sp_MySysNotifcation_Select_ById]

@NotificationID int,
@UserID int,
@IsMarkRead int,
@Result int output
AS

BEGIN

SET NOCOUNT ON;

IF @IsMarkRead=0

BEGIN

UPDATE tblMySysNotifications

SET IsMarkRead=1

WHERE NotificationID=@NotificationID

END

SELECT S.Body,S.Subject, C.UserID

FROM dbo.tblMySysNotifications C

INNER JOIN dbo.tblCoreSysNotifications S ON C.NotificationID = S.NotificationID

WHERE C.NotificationID = @NotificationID
END
以上是SP代码,我想在select的时候给@Result赋值,条件是C.UserID=@UserID时@Result=0,否则为1,该怎么写?
拜托大家了,数据库代码不太熟
...全文
105 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
myemail_bake 2010-11-01
  • 打赏
  • 举报
回复
用来返回用户是不是有权限执行这个sp,考虑到在地址栏手动输入参数的情况,所以要验证这个userID是不是和数据库的一样
「已注销」 2010-11-01
  • 打赏
  • 举报
回复
@Result是干什么用的?

myemail_bake 2010-11-01
  • 打赏
  • 举报
回复
那我应该怎样返回这个@Result?
netcup 2010-11-01
  • 打赏
  • 举报
回复
楼上正解。
「已注销」 2010-11-01
  • 打赏
  • 举报
回复
@Result赋值,条件是C.UserID=@UserID时@Result=0,否则为1
=====
@Result 为output的int值,只能有一个,你在条件中用C.UserID=@UserID来判断
就有有一组值,就算能取到,@Result也只能是最后一次赋值的情况。
这样做有意义么?
感觉还是要从逻辑上先分析清楚了。
myemail_bake 2010-11-01
  • 打赏
  • 举报
回复
呃,不好意思,这样的话会提示“向变量赋值的 SELECT 语句不能与数据检索操作结合使用”
这样的话怎么写呢?
-狙击手- 2010-11-01
  • 打赏
  • 举报
回复
SELECT S.Body,S.Subject, C.UserID,@result = case when C.UserID=@UserID then 0 else 1 end

FROM dbo.tblMySysNotifications C

INNER JOIN dbo.tblCoreSysNotifications S ON C.NotificationID = S.NotificationID

WHERE C.NotificationID = @NotificationID

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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