cs_forums_Posts_PostSet_RSSThreadless//cs_forums_Thread_Get

本文介绍了两个SQL存储过程:一是获取单个论坛主题的基本信息,包括设置Read Uncommitted隔离级别进行脏读;二是设置了相同的隔离级别来查询指定版块的最新帖子。这两个过程展示了如何在SQL Server中灵活运用不同的事务隔离级别。
ContractedBlock.gifExpandedBlockStart.gifcs_forums_Thread_Get
None.gifALTER  PROCEDURE [dbo].cs_forums_Thread_Get
ExpandedBlockStart.gifContractedBlock.gif
/**//*
InBlock.gif
InBlock.gif    Procedure for getting basic information on a single thread.
InBlock.gif        为获取单个主题的基本信息
InBlock.gif
ExpandedBlockEnd.gif
*/

None.gif(
None.gif    
@ThreadID int,
None.gif    
@UserID int,
None.gif    
@SettingsID int
None.gif
AS
None.gif
SET Transaction Isolation Level Read UNCOMMITTED
ExpandedBlockStart.gifContractedBlock.gif
/**//*设置事务隔离级别,Read UNCOMMITTED  执行脏读或 0 级隔离锁定,这表示不发出共享锁,
InBlock.gif  也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更
InBlock.gif  改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有
ExpandedBlockEnd.gif  语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
*/

None.gif
None.gif
SELECT
None.gif    T.
*,
None.gif    P.PostID,
None.gif    P.Subject,
None.gif    P.Body,P.FormattedBody,
None.gif    P.PostConfiguration,
None.gif    P.PropertyNames 
as PostPropertyNames,
None.gif    P.PropertyValues 
as PostPropertyValues,
None.gif    UserName 
= T.PostAuthor,
None.gif    HasRead 
=  CASE
None.gif        
WHEN @UserID = 0 THEN 0
None.gif        
WHEN @UserID > 0 THEN (Select Convert(bit,Count(*)) FROM cs_vw_HasReadForum where ((ThreadID is null and MarkReadAfter > p.ThreadID) or (MarkReadAfter is null and ThreadID = p.ThreadID)) and UserID = @UserID and SectionID = p.SectionID)
None.gif        
END
None.gif
FROM 
None.gif    cs_Posts P,
None.gif    cs_Threads T,
None.gif    cs_vw_Users_FullUser U
None.gif
WHERE 
None.gif    P.PostID 
= P.ParentID AND
None.gif    P.ThreadID 
= @ThreadID AND
None.gif    T.ThreadID 
= P.ThreadID AND
None.gif    P.UserID 
= U.cs_UserID and P.SettingsID = @SettingsID
None.gif
None.gif
ContractedBlock.gifExpandedBlockStart.gifcs_forums_Posts_PostSet_RSSThreadless
None.gifALTER  PROCEDURE dbo.cs_forums_Posts_PostSet_RSSThreadless
None.gif(
None.gif    
@PageSize int,
None.gif    
@SectionID int,
None.gif    
@SettingsID int
None.gif)
None.gif
AS
None.gif
SET Transaction Isolation Level Read UNCOMMITTED
ExpandedBlockStart.gifContractedBlock.gif
/**//*设置事务隔离级别,Read UNCOMMITTED  执行脏读或 0 级隔离锁定,这表示不发出共享锁,
InBlock.gif  也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更
InBlock.gif  改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有
ExpandedBlockEnd.gif  语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
*/

None.gif
BEGIN
None.gif
None.gif
-- First set the rowcount
None.gif--
 首先设置行数记数
None.gif
SET ROWCOUNT @PageSize
None.gif
None.gif
-- Select the individual posts
None.gif--
查询个人帖子
None.gif
SELECT
None.gif    P.PostID, P.ThreadID, P.ParentID, P.PostAuthor, P.UserID, P.SectionID, P.PostLevel, P.SortOrder, P.Subject, P.PostDate, P.IsApproved,
None.gif    P.IsLocked, P.IsIndexed, P.TotalViews, P.Body, P.FormattedBody, P.IPAddress, P.PostType, P.EmoticonID, P.SettingsID, P.AggViews,
None.gif    P.PropertyNames 
as PostPropertyNames, P.PropertyValues as PostPropertyValues,
None.gif    P.PostConfiguration, P.UserTime, P.ApplicationPostType, P.PostName,
None.gif    P.Points 
as PostPoints,
None.gif    T.
*, U.*,
None.gif    T.IsLocked,
None.gif    T.IsSticky,
None.gif    Username 
= P.PostAuthor,
None.gif    ThreadStarterAuthor 
= T.PostAuthor,
None.gif    ThreadStartDate 
= T.PostDate,    
None.gif    EditNotes 
= (SELECT EditNotes FROM cs_PostEditNotes WHERE PostID = P.PostID),
None.gif    AttachmentFilename 
= ISNULL ( (SELECT [FileName] FROM cs_PostAttachments WHERE PostID = P.PostID), ''),
None.gif    Replies 
= 0--not used(SELECT COUNT(P2.PostID) FROM cs_Posts P2 (nolock) WHERE P2.ParentID = P.PostID AND P2.PostLevel != 1),
None.gif
    IsModerator = 0-- not used
None.gif
    HasRead = 0 -- not used
None.gif
FROM 
None.gif    cs_Posts P (nolock),
None.gif    cs_Threads T,
None.gif    cs_vw_Users_FullUser U
None.gif
WHERE 
None.gif    P.UserID 
= U.cs_UserID AND
None.gif    T.ThreadID 
= P.ThreadID AND
None.gif    T.SectionID 
= @SectionID AND
None.gif    P.IsApproved 
= 1 AND
None.gif    P.SettingsID 
= @SettingsID 
None.gif
ORDER BY
None.gif    P.PostDate 
DESC
None.gif
None.gif
END
ExpandedBlockStart.gifContractedBlock.gif
/**//*从用户信息视图和帖子表\主题表中查询*/

转载于:https://www.cnblogs.com/ruanbl/archive/2006/09/20/509728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值