哪位能帮我写下这个存储过程?谢谢!

jfy724 2010-11-22 01:53:40
这样,上几天有一个哥们,帮我写一个了SQL语句,我把其改成存储过程形式,如下:
CREATE PROCEDURE p_Getjop_pic
@strJid nvarchar(150)
as
declare @sql varchar(8000)
set @sql = 'select jid,'
select @sql = @sql + replace('picXX = (select ''a'' from jop_other jo where jo.jid=j.jid and jo.otherid=XX),', 'XX', otherid) from other
print @sql
set @sql = left(@sql, len(@sql)-1)+' from jop j where jid in ('+@strJid+') group by jid' -- 执行
exec (@sql)
GO

但是这个存储过程不能实现分页。现在要实现分页的存储过程,如何实现呢?这个存储过程参数有是那个:页码,页大小,还有就是上一个存储过程的参数。以前写过一个存储过程的分页。如下:

CREATE PROCEDURE p_Getjop
@strWhere nvarchar(1500) -- 查询条件 (注意: 不要加 where)
,@PageSize int = 50 -- 页尺寸
,@PageIndex int = 1 -- 页码
AS
BEGIN
declare @strSQL nvarchar(4000) -- 主语句
declare @strTmp nvarchar(110) -- 临时变量
declare @strOrder nvarchar(400) -- 排序类型
set @strTmp = '<(select min'
set @strOrder = ' order by Jid desc'

if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' * from jop where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' * from jop '+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' * from jop
where Jid' + @strTmp + '(Jid) from
(select top ' + str((@PageIndex-1)*@PageSize) + ' Jid from jop where ' + @strWhere + ' '
+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' * from jop
where Jid' + @strTmp + '(Jid) from (select top ' + str((@PageIndex-1)*@PageSize) + ' Jid from jop' + @strOrder + ') as tblTmp)'+ @strOrder
end
--print (@strSQL)
exec (@strSQL)
END
GO

怎么改编这个变成我需要的呢?
...全文
49 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin龙 2010-11-22
  • 打赏
  • 举报
回复
代码外围加上“[ code=SQL ] [ /code ]”代码标注吧,要不大家看的晕
  • 打赏
  • 举报
回复
http://www.cnblogs.com/freeliver54/archive/2006/12/31/608858.html

7,765

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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