关于SQL存储过程的问题,带TOP参数的存储过程

--从新闻表中取出最新的x条新闻,并按照时间降序排列CREATEPROCEDURE[dbo].[PROC_SelectTopxNews]@xvarchar(10)ASBE... --从新闻表中取出最新的x条新闻,并按照时间降序排列
CREATE PROCEDURE [dbo].[PROC_SelectTopxNews]
@x varchar(10)
AS
BEGIN
select top @x Id,title,createtime from news
order by createtime desc
END
GO
总是报错,现在我已经知道了要声明一个@str,并set @str='select top '+@+' order by createtime desc',我就是想知道原因是什么,为什么不能 select top @x Id,title,createtime from news这样写存储过程
展开
 我来答
再心深w
2013-03-07
知道答主
回答量:1
采纳率:0%
帮助的人:1530
展开全部
存储过程就像是一个小的程序一样,是程序都会有执行步骤,如果你这样写,那再加上一个判断或者加上一个循环呢?那你会写成什么样子呢?而执行的时候,程序还没有智能到遇到你写select就知道你是要查询,只有你执行了查询语句程序才会知道你是要查询。所以你set之后,也只是给@str赋值而已,还没有执行查询。

搞不明白你怎么会这么想,或者说这是谁教你的,能把这种问题给教出来了。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Sino_Ting
2013-03-07 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:119
采纳率:100%
帮助的人:77.3万
展开全部
select top(@x) 只能在sql2005及以上版本才支持。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
szm341
2013-03-07 · TA获得超过6726个赞
知道大有可为答主
回答量:5005
采纳率:100%
帮助的人:5184万
展开全部
sql2005版本以上可以使用top变量,格式是top(@x)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式