VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: redfish119

分页排序存储过程出错,求助

[复制链接]

0

主题

88

帖子

55.00

积分

新手上路

Rank: 1

积分
55.00
发表于 2020-5-19 21:45:01 | 显示全部楼层
ALTER PROCEDURE dbo.VerseLogPaging
       
@SortColumn as varchar(100) = null,
@StartRow as int = null,
@StopRow as int = null

AS

---- 建立有标识符列的table变量
declare @t_table table
(
[rownum] [int] IDENTITY (1, 1) Primary key NOT NULL ,
[SortColumn] [varchar] (40) ,
[VerseNumber] [varchar] (20) ,
[SubmitTime] [datetime] ,
[VerseText] [varchar] (500) ,
[UserID] [varchar] (20)
)
declare @sql varchar(8000)

---- 在返回指定的@StopRow行数之后停止处理查询
Set RowCount @StopRow

---- 插入到table变量中
set @sql = 'insert '+@t_table+' ([VerseNumber],[SubmitTime],[VerseText],[UserID]) SELECT [VerseNumber],[SubmitTime],[VerseText],[UserID] FROM ConstructionVerseLog order by '+@SortColumn
exec(@sql)

---- 返回到正确的结果
set @sql = 'SELECT * FROM '+@t_table+' WHERE rownum >= '+@StartRow+' ORDER BY rownum'
exec(@sql)

/* SET NOCOUNT ON */
RETURN
回复

使用道具 举报

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
 楼主| 发表于 2020-5-20 17:30:01 | 显示全部楼层
未声明@t_table
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-5-21 10:15:01 | 显示全部楼层
order by ['+@SortColumn+'] '

改為

order by '+@SortColumn+' '

去掉[]試試
回复

使用道具 举报

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
 楼主| 发表于 2020-5-21 20:45:01 | 显示全部楼层
- -还是不行

急啊
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-5-22 09:00:02 | 显示全部楼层
print @sql

--把@sql打印出來看看
回复

使用道具 举报

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
 楼主| 发表于 2020-5-23 11:15:02 | 显示全部楼层
No rows affected.
(0 row(s) returned)
No rows affected.
(0 row(s) returned)
Running [dbo].[VerseLogPaging] ( @SortColumn = versenumber, @StartRow = 5, @StopRow = 20 ).

Syntax error converting the varchar value ' ORDER BY rownum ' to a column of data type int.
(20 row(s) affected)
(0 row(s) returned)
@RETURN_VALUE =
Finished running [dbo].[VerseLogPaging].
The thread '(null)(56)' (0x800003cc) has exited with code 0 (0x0).
The program 'SQL Debugger: T-SQL' has exited with code 0 (0x0).
回复

使用道具 举报

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
 楼主| 发表于 2020-5-23 11:45:01 | 显示全部楼层
insert @t_table
(
[VerseNumber],[SubmitTime],[VerseText],[UserID])
SELECT [VerseNumber],[SubmitTime],[VerseText],[UserID]
FROM ConstructionVerseLog
order by '+@SortColumn+'

---- 返回到正确的结果
set @sql=@sql+
' SELECT * FROM @t_table WHERE rownum >='+ @StartRow +
' ORDER BY rownum '
EXEC(@sql)
Set RowCount 0 --最好加上這句
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-5-28 01:30:01 | 显示全部楼层
Syntax error converting the varchar value ' ORDER BY rownum ' to a column of data type int.

--數據類型轉換出錯
回复

使用道具 举报

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
 楼主| 发表于 2020-5-30 09:30:01 | 显示全部楼层
SELECT * FROM @t_table WHERE rownum >='+ @StartRow +

@StartRow声明的是int型啊
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-5-30 21:45:01 | 显示全部楼层
把你調用存儲過程的SQL語句和 ConstructionVerseLog 的表結構貼出來看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表