一个 简单的存储过程我找不到错误在哪

 

存储过程

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


-- =============================================
--
Author: 小黑
--
Create date: 2011-2-17
--
Description: 根据ID获取上一页下一页的存储过程
--
=============================================
ALTER PROCEDURE [dbo].[proc_PrevorNextpro]
@proid int,--表id
@str nvarchar(20),--prev 则是上一件 next则是下一件
@tblName nvarchar(20)--表名
AS
BEGIN
declare @rowid int
select @rowid=rowid from(
select ROW_NUMBER() over (order by createdate desc) as rowid,* from @tblName )as a where a.id=@proid
if @str='prev'
set @rowid=@rowid-1
else
set @rowid=@rowid+1

select * from(
select ROW_NUMBER() over (order by createdate desc) as rowid,* from @tblName )as a where a.rowid=@rowid
END

 

 

总是提示消息

 1087,级别 15,状态 2,过程 proc_PrevorNextpro,第 16 行
必须声明表变量 "@tblName"。
消息 1087,级别 15,状态 2,过程 proc_PrevorNextpro,第 24 行
必须声明表变量 "@tblName"。

噜噜哒
浏览 779回答 5
5回答

慕标5832272

感谢

largeQ

select ROW_NUMBER() over (order by createdate desc) as rowid,* from @tblName 这样是不对的。表名称是不可以为变量的。 你应该是用拼接sql的方式来完成你的逻辑。 楼上很全了

慕神8447489

感谢
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server