1
ALTER procedure dbo.cs_Favorite_GetByUserItem2
(3
@SettingsID int,4
@FavoriteType int,5
@UserID int,6
@ItemID int7
)8
AS9
SET NOCOUNT ON10

11

/**//*当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。12
当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,13
也更新 @@ROWCOUNT 函数。*/14
SET Transaction Isolation Level Read UNCOMMITTED15

16

/**//*设置事务隔离级别,Read UNCOMMITTED 执行脏读或 0 级隔离锁定,这表示不发出共享锁,17
也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更18
改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有19
语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。*/20

21
-----------------------------------------------------------------------------22

/**//*同样是判断类型先,然后在执行操作.此条多了个拥有者的条件,其他还是照就.*/23
-----------------------------------------------------------------------------24

25
IF @FavoriteType = 1 -- Section26

27
SELECT28
F.FavoriteID,29
F.OwnerID AS UserID,30
F.SettingsID,31
F.SectionID AS ItemID,32
@FavoriteType AS FavoriteType,33
F.ApplicationType34
FROM35
cs_FavoriteSections F36
WHERE37
F.OwnerID = @UserID AND38
F.SectionID = @ItemID AND39
F.SettingsID = @SettingsID40

41
ELSE IF @FavoriteType = 2 -- User42

43
SELECT44
F.FavoriteID,45
F.OwnerID AS UserID,46
F.SettingsID,47
F.UserID AS ItemID,48
@FavoriteType AS FavoriteType,49
F.ApplicationType50
FROM51
cs_FavoriteUsers F52
WHERE53
F.OwnerID = @UserID AND54
F.UserID = @ItemID AND55
F.SettingsID = @SettingsID56

57
ELSE IF @FavoriteType = 4 -- Post58

59
SELECT60
F.FavoriteID,61
F.OwnerID AS UserID,62
F.SettingsID,63
F.PostID AS ItemID,64
@FavoriteType AS FavoriteType,65
F.ApplicationType66
FROM67
cs_FavoritePosts F68
WHERE69
F.OwnerID = @UserID AND70
F.PostID = @ItemID AND71
F.SettingsID = @SettingsID72

73

74
GO