头痛的难题

Not 2003-06-18 02:20:00
MS SQL SERVER SQL代码:

CREATE PROCEDURE List
(
@Table NVARCHAR(50),
@Page INT = 0,
@Number INT = 20,
@Field NVARCHAR(50) = '[ID]'
)
AS

-- 获取总页数
DECLARE @PageNumber INT

-- 问题:在这里如何把@Table 中的记录数赋给@PageNumber变量?
...全文
59 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Not 2003-06-28
  • 打赏
  • 举报
回复
是哦,搞定!
Not 2003-06-23
  • 打赏
  • 举报
回复
我倒!!!过不了两天那些带着XXX头衔的人又会来找我说:“你要结帖,否则会扣你的信誉分”
zjcxc 2003-06-23
  • 打赏
  • 举报
回复
你的目的是:
找某个表的第n条记录的ID字段的值

这个根本不用游标就可以嘛,这样子就行啦
declare @n int
set @n = 41

declare @id int

declare @sql nvarchar(1000),@para nvarchar(100)

set @sql = 'select top '+ cast(@n as nvarchar) + '@aa=id from test order by id desc'
set @para='@aa int output'
execute sp_executesql @sql, @para, @id output

print @id

wuyaoh 2003-06-23
  • 打赏
  • 举报
回复
参照下面~~~不明白,可以查一下sp_executesql的用法!

Create Procedure GetMaxID
@TableName varchar(100),
@ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = count(*) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
wanhuaren 2003-06-20
  • 打赏
  • 举报
回复
学习ing
Not 2003-06-20
  • 打赏
  • 举报
回复
大力,看看我的游标为什么不能当参数传?
Not 2003-06-19
  • 打赏
  • 举报
回复
老大,怎么没声了啊?
Not 2003-06-19
  • 打赏
  • 举报
回复
我顶……
Not 2003-06-19
  • 打赏
  • 举报
回复
1.我要找某个表的第n条记录的ID字段的值,所以用游标。
2.就是不明白 :(

现在改了下代码:
DECLARE @N INT
SET @N = 41

DECLARE @ID INT

DECLARE @SQL NVARCHAR(200)

DECLARE @MyCursor CURSOR

SET @SQL = '
SET @X = CURSOR SCROLL FOR
SELECT TOP '+ CAST(@N AS NVARCHAR(50)) + ' ID FROM Test ORDER BY ID DESC'

EXECUTE sp_executesql @SQL, N'@X CURSOR OUTPUT', @MyCursor OUTPUT

OPEN @MyCursor

FETCH LAST FROM @MyCursor INTO @ID

DEALLOCATE @MyCursor

PRINT @ID

--出错信息
服务器: 消息 16950,级别 16,状态 2,行 16
当前没有为变量 '@MyCursor' 分配游标。
服务器: 消息 16950,级别 16,状态 2,行 18
当前没有为变量 '@MyCursor' 分配游标。
服务器: 消息 16950,级别 16,状态 2,行 20
当前没有为变量 '@MyCursor' 分配游标。
pengdali 2003-06-19
  • 打赏
  • 举报
回复
1、你用游标做什么??
2、我不是写了吗??
@aa是你随便给的关键是后面有个变量来得到里面的@aa
Not 2003-06-19
  • 打赏
  • 举报
回复
大力,我的MSN:notking@hotmail.com

可以交流下吗?
Not 2003-06-19
  • 打赏
  • 举报
回复
看看我上面这个怎么写?
Not 2003-06-19
  • 打赏
  • 举报
回复
大力,对你的方法有点不明白的地方:@aa是用来做什么的?
@PageNumber传给了谁???

DECLARE @N INT
SET @N = 41
DECLARE @ID INT

DECLARE @SQL NVARCHAR(200)

DECLARE @MyCursor CURSOR

SET @SQL = '
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT TOP '+ CAST(@N AS NVARCHAR(50)) + ' ID FROM Test ORDER BY ID DESC'

EXECUTE sp_executesql @SQL, @MyCursor output

OPEN @MyCursor

FETCH LAST FROM @MyCursor INTO @N

DEALLOCATE @MyCursor

PRINT @N

--
服务器: 消息 214,级别 16,状态 3,过程 sp_executesql,行 13
过程需要参数 '@parameters' 为 'ntext/nchar/nvarchar' 类型。
p2bl 2003-06-18
  • 打赏
  • 举报
回复
你的表有没有主键?如果有的话
select @PageNumber=rows from sysindex where name='PK_'+@Table
pengdali 2003-06-18
  • 打赏
  • 举报
回复
CREATE PROCEDURE List
(
@Table NVARCHAR(50),
@Page INT = 0,
@Number INT = 20,
@Field NVARCHAR(50) = '[ID]'
)
AS

-- 获取总页数
DECLARE @PageNumber INT,@sql nvarchar(1000)

set @sql=N'select @aa = count(*) from '+@Table
exec sp_executesql @sql,N'@aa int output',@PageNumber output
fanmb 2003-06-18
  • 打赏
  • 举报
回复
CREATE PROCEDURE List
(
@Table NVARCHAR(50),
@Page INT = 0,
@Number INT = 20,
@Field NVARCHAR(50) = '[ID]'
)
AS

DECLARE @PageNumber INT
declare @sqlstr varchar(300)
select @sqlstr = 'select count(*) from ' + @table
exec(@sqlstr)
select @pagenumber = @@ROWCOUNT --把@Table 中的记录数赋给@PageNumber变量
fantasyfire 2003-06-18
  • 打赏
  • 举报
回复
帮你顶吧:)
CrazyFor 2003-06-18
  • 打赏
  • 举报
回复
参考:

declare @tcnt int
declare @paras varchar(100)
DECLARE @SQLString NVARCHAR(500)
set @paras ='1,3,5'
set @sqlstring=N'select @cnt=count(*) from sysobjects where id in ('+@paras+')'

set @tcnt=0
execute sp_executesql
@sqlstring,
N'@cnt int output',
@cnt=@tcnt output
select @tcnt


select * from sysobjects



Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = count(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
Not 2003-06-18
  • 打赏
  • 举报
回复
我顶……

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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