[求助]一个简单存储过程,总出错,请高手指点!在线等~

mndn_nana 2007-08-21 03:37:37
@count是传入得参数
这里不让保存,错误提示是:'count *'附近由语法错误.
这里的@count我想设置为自己可以输入的参数,所以请不要说把'count *'改成一个具体数字就可以之类的, 请高手赐教.
CREATE PROCEDURE dbo.GetTopNews

(
@newsKindID int,
@count int
)

AS
select top count * from tb_News where newsKindID=@newsKindID
RETURN

...全文
231 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
没遇到过这种情况.
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
我也想了解,谢谢LZ.
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
有问题请先GOOGLE,BAIDU
test_8e83 2008-04-19
  • 打赏
  • 举报
回复
哦,这样。明白了
pt1314917 2007-08-21
  • 打赏
  • 举报
回复
呵呵。有“鱼”的地方就有正解。强``
学习了``
wang520d 2007-08-21
  • 打赏
  • 举报
回复
唉 我也跟着看了好久了 就是没有搞明白动态SQL啊。。
paoluo 2007-08-21
  • 打赏
  • 举报
回复
樓主來了有幾個月了,好象不怎麼會結貼的。
mndn_nana 2007-08-21
  • 打赏
  • 举报
回复
-- try

exec ('select top ' + @count + ' * from tb_News where newsKindID = ' + @newsKindID + ')
没成功

CREATE PROCEDURE dbo.GetTopNews

(
@newsKindID int,
@count int
)

AS
Begin
Declare @S Varchar(8000)
Select @S = ' select top ' + Cast(@count As Varchar) +' * from tb_News where newsKindID=' + Cast(newsKindID As Varchar)
EXEC(@S)
RETURN
End
GO
可以用,谢谢2位
非常感谢
zp_cool 2007-08-21
  • 打赏
  • 举报
回复
top @count 不能用 top后面只能跟常量
paoluo 2007-08-21
  • 打赏
  • 举报
回复
mndn_nana() ( ) 信誉:100 2007-08-21 15:58:03 得分: 0


难道不能 top @count 用吗?


---------
MS SQL 2000裡面不可以。

如果你要top @count ,就要和我開始寫的那個一樣,使用動態SQL 語句。
mndn_nana 2007-08-21
  • 打赏
  • 举报
回复
难道不能 top @count 用吗?
mndn_nana 2007-08-21
  • 打赏
  • 举报
回复
不是 不会是select count(*) from tb_News where newsKindID=@newsKindID
是想把tb_News 中的前@count行的信息查询出来,然后要绑定
paoluo 2007-08-21
  • 打赏
  • 举报
回复
mndn_nana() ( ) 信誉:100 2007-08-21 15:51:56 得分: 0


CREATE PROCEDURE dbo.GetTopNews

(
@newsKindID int,
@count int
)

AS
Begin
SET ROWCOUNT @count
select * from tb_News where newsKindID=@newsKindID
RETURN
End
GO

是可以保存,但select * from tb_News where newsKindID=@newsKindID中没有涉及到 @count,总感觉不对
请再详细赐教

-----------

注意上面的
SET ROWCOUNT @count

這個限制了顯示的行數的。

你可以測試下。
xiangyu120 2007-08-21
  • 打赏
  • 举报
回复
动态SQL 语句
mndn_nana 2007-08-21
  • 打赏
  • 举报
回复
CREATE PROCEDURE dbo.GetTopNews

(
@newsKindID int,
@count int
)

AS
Begin
SET ROWCOUNT @count
select * from tb_News where newsKindID=@newsKindID
RETURN
End
GO

是可以保存,但select * from tb_News where newsKindID=@newsKindID中没有涉及到 @count,总感觉不对
请再详细赐教
Limpire 2007-08-21
  • 打赏
  • 举报
回复
-- try

exec ('select top ' + @count + ' * from tb_News where newsKindID = ' + @newsKindID + ')
test_8e83 2007-08-21
  • 打赏
  • 举报
回复
不会是select count(*) from tb_News where newsKindID=@newsKindID吧???
paoluo 2007-08-21
  • 打赏
  • 举报
回复
或者

CREATE PROCEDURE dbo.GetTopNews

(
@newsKindID int,
@count int
)

AS
Begin
SET ROWCOUNT @count
select * from tb_News where newsKindID=@newsKindID
RETURN
End
GO
isabell_clover 2007-08-21
  • 打赏
  • 举报
回复
count -> @count 试试.
paoluo 2007-08-21
  • 打赏
  • 举报
回复
使用動態SQL語句
加载更多回复(1)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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