惭愧,这个存储过程报错,不知道怎么改,特来请教。
就是普通的select top n *,我想取前几条能用变量自己设定,但是select top @Total * 貌似不能用,不知道该改成什么样的,求指导。谢谢!
CREATE PROCEDURE Getlist@Classid int,@Total intASif(@Total>=6) select top 6 * from tb_article where Classid = @Classidelse beginselect top @Total * from tb_article where Classid = @Classidunion allselect top (6 - @Total) * from tb_article where Classid = @Classid end
如需要阅读该回复,请登录或注册CSDN!
select top (@Total) * from tb_article where Classid = @Classid
[解决办法]
CREATE PROCEDURE Getlist
@Classid int,
@Total int
AS
if(@Total>=6)
select top 6 * from tb_article where Classid = @Classid
else
begin
declare @sql nvarchar(4000)
set @sql='select top '+ltrim(@Total)+' * from tb_article where Classid = '+ltrim(@Classid)+'
union all
select top '+ltrim(6 - @Total)+' * from tb_article where Classid = '+ltrim(@Classid))
exec(@sql)
end
SQL2K
[解决办法]
top(@Total) 05及以上版本可以。
如果是2000,需要拼接SQL的动态语句去执行。
[解决办法]
select top (@Total) * from tb_article where Classid = @Classid
[解决办法]
如需要阅读该回复,请登录或注册CSDN!