sql 为什么设置了nolock 还是会死锁
答案:2 悬赏:0
解决时间 2021-04-06 13:44
- 提问者网友:烟刺痛了眼
- 2021-04-06 09:08
sql 为什么设置了nolock 还是会死锁
最佳答案
- 二级知识专家网友:走,耍流氓去
- 2021-04-06 10:20
ALTER PROCEDURE [dbo].[proCicPagination]
(
@TableName nvarchar(200)
,@OrderBy nvarchar(200) = ' id '
,@FieldList nvarchar(200) = '*'
,@Filter nvarchar(500)
,@StartIndex int = 1
,@PageSize int = 1
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @ExecSql nvarchar(max) -- 要执行的ql
DECLARE @where varchar(200)
DECLARE @EndIndex int
SET @EndIndex = @startIndex+@pageSize-1
if len(@Filter) = 0
set @where = ''
else
set @where = ' where '+@Filter
SET @ExecSql = 'WITH RowList AS ( '
+'SELECt ROW_NUMBER() OVER (ORDER BY '+@OrderBy+' )AS Row, '+ @FieldList
+' from '+@TableName + ' WITH(NOLOCK) ' + @where +' ) '
+' SELECt ' + @FieldList + ' FROM RowList WITH(NOLOCK) WHERe Row between '+convert(varchar,@startIndex)+' and '+convert(varchar,@EndIndex)
print @ExecSql
EXEC (@ExecSql) -- 返回结果集
END
(
@TableName nvarchar(200)
,@OrderBy nvarchar(200) = ' id '
,@FieldList nvarchar(200) = '*'
,@Filter nvarchar(500)
,@StartIndex int = 1
,@PageSize int = 1
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @ExecSql nvarchar(max) -- 要执行的ql
DECLARE @where varchar(200)
DECLARE @EndIndex int
SET @EndIndex = @startIndex+@pageSize-1
if len(@Filter) = 0
set @where = ''
else
set @where = ' where '+@Filter
SET @ExecSql = 'WITH RowList AS ( '
+'SELECt ROW_NUMBER() OVER (ORDER BY '+@OrderBy+' )AS Row, '+ @FieldList
+' from '+@TableName + ' WITH(NOLOCK) ' + @where +' ) '
+' SELECt ' + @FieldList + ' FROM RowList WITH(NOLOCK) WHERe Row between '+convert(varchar,@startIndex)+' and '+convert(varchar,@EndIndex)
print @ExecSql
EXEC (@ExecSql) -- 返回结果集
END
全部回答
- 1楼网友:請叫我丶偏執狂
- 2021-04-06 10:33
额
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯