关于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这样写存储过程 展开
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这样写存储过程 展开
3个回答
展开全部
存储过程就像是一个小的程序一样,是程序都会有执行步骤,如果你这样写,那再加上一个判断或者加上一个循环呢?那你会写成什么样子呢?而执行的时候,程序还没有智能到遇到你写select就知道你是要查询,只有你执行了查询语句程序才会知道你是要查询。所以你set之后,也只是给@str赋值而已,还没有执行查询。
搞不明白你怎么会这么想,或者说这是谁教你的,能把这种问题给教出来了。。
搞不明白你怎么会这么想,或者说这是谁教你的,能把这种问题给教出来了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top(@x) 只能在sql2005及以上版本才支持。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql2005版本以上可以使用top变量,格式是top(@x)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询