VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
123
返回列表 发新帖
楼主: redfish119

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

[复制链接]

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
 楼主| 发表于 2020-6-1 11:15:01 | 显示全部楼层
VerseNumber        int        4
SubmitTime        datetime        8
VerseText                nvarchar        2000
UserID                nvarchar        50
这是表结构
我直接在sql里运行存储过程就不行
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-6-1 21:30:01 | 显示全部楼层
@t_table 中:
[VerseNumber] [varchar] (20)

ConstructionVerseLog 中:
VerseNumber        int        4

--這兩個轉換時出錯
回复

使用道具 举报

0

主题

211

帖子

108.00

积分

新手上路

Rank: 1

积分
108.00
发表于 2020-6-1 22:30:01 | 显示全部楼层
--try

ALTER PROCEDURE dbo.VerseLogPaging
       
@SortColumn as varchar(100) = null,
@StartRow as int = null,
@StopRow as int = null
AS

declare @sql varchar(8000)
---- 建立有标识符列的table变量
set @sql='
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)
)
'
---- 在返回指定的@StopRow行数之后停止处理查询
Set RowCount @StopRow

---- 插入到table变量中
set @sql=@sql+
'
insert @t_table
(
[VerseNumber],[SubmitTime],[VerseText],[UserID])
SELECT rtrim([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 --最好加上這句

        /* SET NOCOUNT ON */
        RETURN
回复

使用道具 举报

1

主题

17

帖子

15.00

积分

新手上路

Rank: 1

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

Syntax error converting the varchar value '
declare @t_table table
(
[rownum] [int] IDENTITY (1, 1) Primary key NOT NULL ,
[SortColumn] [varchar] (40) ,
[VerseNumber] [int],
[SubmitTime] [datetime],
[VerseText] [varchar] (500) ,
[UserID] [varchar] (20)
)

insert @t_table
(
[VerseNumber],[SubmitTime],[VerseText],[UserID])
SELECT ([VerseNumber]),[SubmitTime],[VerseText],[UserID]....
No rows affected.
(0 row(s) returned)
@RETURN_VALUE =
Finished running [dbo].[VerseLogPaging].
The thread '(null)(59)' (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-6-8 17:45:02 | 显示全部楼层
用微软的存储过程,实现了,谢谢fanfan1980
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-7-24 00:00:01 | 显示全部楼层
分页存储过程这样写还是有极限性,可以写的更通用一些
回复

使用道具 举报

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

本版积分规则

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

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