老调试不成功的存储过程,一个堵我心口好久的问题。

wnglish 2003-09-29 01:46:31
该存储过程老说:“@indextable没有声明”,我明明声明了,晕倒。

CREATE procedure s_Tables_Page
(
@pagesize int,
@pageindex int,
@table varchar(200)
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
exec ('insert into '+@indextable+'(nid) select id from '+@table+' order by id desc')
exec ('select * from '+@table+' O,'+@indextable+'t where O.id=t.nid and t.id>'+@PageLowerBound+' and t.id<='+@PageUpperBound+' order by t.id')

set nocount off
GO
...全文
43 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
火电 2003-12-03
  • 打赏
  • 举报
回复

CREATE TABLE #table
(
id int identity(1,1),
nid int
)

exec ('insert into #table (nid) select id from '+@table+' order by id desc')

这样试试
songweiping 2003-09-29
  • 打赏
  • 举报
回复
表参数与表名的字符传参数的格式不同,及@table varchar(200)与declare @indextable table(id int identity(1,1),nid int),正确格式是:

CREATE procedure s_Tables_Page
(
@pagesize int,
@pageindex int,
@table varchar(200)
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
exec ('insert into @indextable (nid) select id from '+@table+' order by id desc')
exec ('select * from '+@table+' O,@indextable t where O.id=t.nid and t.id>'+@PageLowerBound+' and t.id<='+@PageUpperBound+' order by t.id')

set nocount off
qimini 2003-09-29
  • 打赏
  • 举报
回复
UP
wnglish 2003-09-29
  • 打赏
  • 举报
回复
已有朋友帮我调试出来。答案:

CREATE procedure s_Tables_Page
(
@pagesize int,
@pageindex int,
@table varchar(200)
)
as
set nocount on
--declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
exec ('declare @indextable table(id int identity(1,1),nid int) insert into '+@indextable+'(nid) select id from '+@table+' order by id desc select * from '+@table+' O,'+@indextable+'t where O.id=t.nid and t.id>'+@PageLowerBound+' and t.id<='+@PageUpperBound+' order by t.id')
set nocount off
GO
mmkk 2003-09-29
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2106/2106786.xml?temp=.8503076
http://expert.csdn.net/Expert/topic/2272/2272334.xml?temp=.1327173
wnglish 2003-09-29
  • 打赏
  • 举报
回复
@indextable是已经声明一个临时表,这样是对的,但我想把数据库表明当参数传递过去,所有就用了exec,但老调试不过,晕

CREATE procedure s_Message_Page
(
@pagesize int,
@pageindex int
)
as
set nocount on

declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select id from t_Tables order by id desc
select * from t_Tables O,@indextable t where O.id=t.nid and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id

set nocount off
GO
forestyang 2003-09-29
  • 打赏
  • 举报
回复
what's name of @indextable?
lmdotnet 2003-09-29
  • 打赏
  • 举报
回复
关注

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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