| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 724 人关注过本帖
标题:关于查询语句里Top跟参数的问题
收藏  订阅  推荐  打印 
天堂落日
Rank: 2
等级:注册会员
威望:2
帖子:170
积分:1849
注册:2007-6-17
关于查询语句里Top跟参数的问题

小弟在做一个新闻发布模块的时候试图创建这么一个存储过程:主要功能就是查看前N个新闻,但一直报错
具体Sql语句如下,希望高手帮忙找下到底该如何改正
程序代码:
create procedure GetTopNews
(
@intTop int,
@NewsKindID int
)
as
select top @intTop * from News where NewsKindID=@NewsKindID
return
问题是如果我把@intTop参数的声明去掉,并且把top关键字后便的变量换成一个常数就可以成功创建,……,莫非top后面不能跟变量做参数吗?但我以前在好像某个论坛模板上看到有可以查看制定数目的前N条帖子这样的功能啊
搜索更多相关主题的帖子: 语句  参数  Top  变量  NewsKindID  
2007-11-24 17:11
purana
Rank: 12Rank: 12Rank: 12
来自:广东-广州
等级:版主
威望:66
帖子:6040
积分:61390
注册:2005-6-17

create procedure GetTopNews
@intTop int,
@NewsKindID int
as
declare @SQL varchar(8000)
set @SQL='select top'+ cast(@intTop as varchar)+' * from News where NewsKindID='+cast(@NewsKindID as varchar)
exec (@SQL)
go

我的msn: myfend@hotmail.com
2007-11-24 17:22
天堂落日
Rank: 2
等级:注册会员
威望:2
帖子:170
积分:1849
注册:2007-6-17

问题得到解决啦,
非常感谢版主大人
:victory:

2007-11-24 17:29
orliubc
Rank: 2
等级:注册会员
帖子:69
积分:840
注册:2007-11-18

TO 1楼
形参@intTop是int的,select top里应该是string, cast一下应该可以了吧。

create procedure GetTopNews
@intTop int,
@NewsKindID int
as
select top cast(@intTop as varchar) * from News where NewsKindID=@NewsKindID
return
2007-11-24 17:40
orliubc
Rank: 2
等级:注册会员
帖子:69
积分:840
注册:2007-11-18

@NewsKindID也要cast,漏掉了
:(
2007-11-24 17:43
天堂落日
Rank: 2
等级:注册会员
威望:2
帖子:170
积分:1849
注册:2007-6-17

非常感谢楼上朋友的回答
问题得到解决啦
:victory:

2007-11-24 17:59
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.128037 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved