存储过程的参数使用,急急急,在线等候 分不够可以再加

arrow_gx 2002-12-12 03:43:34
求救一个存储过程,要求要有 一个 数字参数,表示要返回的记录条数
procedure sp_aaa @jus int=100
as
select top @jus tab1.id,tab.aaa from tab
GO

调用存储过程 SP_aaa (100),可以返回一百条,
调用存储过程 SP_aaa (1000),可以返回一千条,

但是在 @jus 的地方 SQL 总说有错误,应该如何解决???

以上的是一个结构,真正用的将是一个比较复杂的存储过程,各位大侠谁能解决这个 top ?? 的问题,急急急
...全文
22 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ben988211 2002-12-14
  • 打赏
  • 举报
回复
CCEO() ,没问题试过了
ROBOT 2002-12-13
  • 打赏
  • 举报
回复
the answer of chiff's worth 150'
Chiff 2002-12-13
  • 打赏
  • 举报
回复
to:8088的脑袋
为何不试试set rowcount @n
的方法呢?
arrow_gx 2002-12-13
  • 打赏
  • 举报
回复
感谢大家的帮助,给分
nielisheng 2002-12-12
  • 打赏
  • 举报
回复
CREATE PROCEDURE sp_aa
@aa int
AS

declare @strsql varchar(4000)

select @strsql = "select top "+cast(@aa as varchar(10))+" * from tablename"

print @strsql

exec(@strsql)

调用:sp_aa 100 无问题

wwccxx 2002-12-12
  • 打赏
  • 举报
回复
DEclare @topint int
set @topint = 2
declare @topchar varchar(10)
set @topchar = cast(@topint as varchar(2))
exec ('select top ' + @topchar + ' * from t_score')

直接在exec 中 cast int to char 编译过不了。
seth99 2002-12-12
  • 打赏
  • 举报
回复
同意zqllyh(找感觉)和brook_huang(brook)
brook_huang 2002-12-12
  • 打赏
  • 举报
回复
试试:
procedure sp_aaa @jus
as
set rowcount @jus
select tab1.id,tab.aaa from tab
GO

exec sp_aaa 100
CCEO 2002-12-12
  • 打赏
  • 举报
回复
如果真的复杂,比如用到了临时表,也许Chiff(~o~) 的方法会比较方便。
自己看情况选用吧!
newyu1127 2002-12-12
  • 打赏
  • 举报
回复
CCEO()的没错,用动态SQL解决。
hjhing 2002-12-12
  • 打赏
  • 举报
回复
exec ('select top '+convert(varchar(10),@jus)+' tab1.id,tab.aaa from tab')
wgy2008 2002-12-12
  • 打赏
  • 举报
回复
关注
Sunny3141 2002-12-12
  • 打赏
  • 举报
回复
我现在用的方法跟 CCEO() ( )的一样
cmlcm 2002-12-12
  • 打赏
  • 举报
回复
同意CCEO() 的观点,将参数变成字符串组合成SQL语句执行
zqllyh 2002-12-12
  • 打赏
  • 举报
回复
procedure sp_aaa @jus int=100
as
exec ('select top '+cast(@jus as varchar(10))+' tab1.id,tab.aaa from tab')
GO

Sunny3141 2002-12-12
  • 打赏
  • 举报
回复
我来晚了,顶一下。
CCEO 2002-12-12
  • 打赏
  • 举报
回复
procedure sp_aaa @jus int=100
as
declare @sql varchar(2000)
set @sql='select top '+cast(@jus as varchar(10))+' tab1.id,tab.aaa from tab'
exec (@sql)

GO
Chiff 2002-12-12
  • 打赏
  • 举报
回复
declare @n int
set @n = 5
set rowcount @n
select * from 表

set @n = 10
set rowcount @n
select * from 表

set rowcount 0

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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