在存储过程中的变量问题!在线等待!!!

stium 2004-04-02 09:04:14
CREATE PROCEDURE [dbo].[sp_Get_Infolist]

@Info_Count int = 0 --按时间降序,返回指定条数的信息

AS

IF NOT @Info_Count = 0
BEGIN
SELECT TOP @Info_Count News_ID,News_Title
FROM Info_Main
END
GO

以上存储过程中的“SELECT TOP @Info_Count”语句@Inof_Count变量出错。请问:如何才能够把用户传进来的值放在TOP后面,让查询值返回用户指定的@Info_Count条数?非常急,在线等待!!!
...全文
23 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lb_panda 2004-04-02
  • 打赏
  • 举报
回复
progress99(如履薄冰)的语句应该没有问题的呀。

要不你试试将
cast(@Info_Count as varchar)
改为
convert(varchar,@Info_Count)

再试试
stium 2004-04-02
  • 打赏
  • 举报
回复
已经解决了,非常感谢二位!!!

不过用这个解决方法执行效率可能会低,这跟在页面提交一样的效果了,没有放到缓存里,每提交一次都需要重新执行,不过已经达到目的,就非常感谢了!^o^
stium 2004-04-02
  • 打赏
  • 举报
回复
非常感谢!
但是还是提示“Incorrect syntax near 'cast'”如何解决?
progress99 2004-04-02
  • 打赏
  • 举报
回复


CREATE PROCEDURE [dbo].[sp_Get_Infolist]

@Info_Count int = 0 --按时间降序,返回指定条数的信息

AS

IF NOT @Info_Count = 0
BEGIN
declare @sql varchar(200)
set @sql=' SELECT TOP '+cast(@Info_Count as varchar) +' News_ID,News_Title FROM Info_Main '
exec(@sql)
END
GO
progress99 2004-04-02
  • 打赏
  • 举报
回复
用exec

CREATE PROCEDURE [dbo].[sp_Get_Infolist]

@Info_Count int = 0 --按时间降序,返回指定条数的信息

AS

IF NOT @Info_Count = 0
BEGIN
declare @sql varchar(200)
set @sql=' SELECT TOP '+cast(@Info_Count as varchar) +' * FROM tabchar '
exec(@sql)
END
GO
pbsql 2004-04-02
  • 打赏
  • 举报
回复
exec('SELECT TOP '+cast(@Info_Count as varchar)+' News_ID,News_Title
FROM Info_Main')

22,210

社区成员

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

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