| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1221 人关注过本帖
标题:提出最新几条信息用存储过程,加top为什么不行??(怎么加了个条件又不行了?急 ...
只看楼主 加入收藏
yzwt2004
Rank: 1
等 级:新手上路
帖 子:472
专家分:0
注 册:2006-1-18
收藏
 问题点数:0 回复次数:11 
提出最新几条信息用存储过程,加top为什么不行??(怎么加了个条件又不行了?急呀)

create proc info
@topsl int
as
declare @s varchar(5000)
begin
set @s='SELECT top '+@topsl+' * from users order by id desc'
exec (@s)
end
go


前台调用:
set rs = server.createobject("adodb.recordset")
rs.Open " exec info 5",conn,1,1


以上代码无法运行,


但是下面这种情况就能通行:
create proc info
as
declare @s varchar(5000)
begin
set @s='SELECT top 7 * from users order by id desc'
exec (@s)
end
go

前台调用:
set rs = server.createobject("adodb.recordset")
rs.Open " exec info ",conn,1,1


为什么加了个top变量就不行了呢??我那里有错误吗???


最新问题:
create proc info
@rdp varchar(50),
@topsl varchar
as
declare @s varchar(5000)
begin
set @s='SELECT top
'+@topsl+' * from users where rdp= '+@rdp+' order by id desc'
exec (@s)
end
go

前台调用:
dim rdp
rdp="北京"
set rs = server.createobject("adodb.recordset")
rs.Open " exec info '"&rdp&"','5'",conn,1,1

top是对了,但加了个条件又不行了,我开始是有条件的没有top就通行了,现在有条件又有top怎么又不行了

[此贴子已经被作者于2007-4-18 8:16:48编辑过]

搜索更多相关主题的帖子: top 条件 
2007-04-17 17:48
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
@topsl int

改成varchar 就行了 自己看看吧

2007-04-17 17:51
yzwt2004
Rank: 1
等 级:新手上路
帖 子:472
专家分:0
注 册:2006-1-18
收藏
得分:0 



人才呀,呵呵

为什么呢,他明明是整型的嘛,我给个定个int,这样为什么不对呢?


想学 .Net 了
2007-04-17 18:01
yzwt2004
Rank: 1
等 级:新手上路
帖 子:472
专家分:0
注 册:2006-1-18
收藏
得分:0 

后台经过调试;下面这种能就能行,为什么会这样呢? 我多加了二个''就能行了,这是为什么???
而top那里不是'++'的吗?为什么rdp那里就得'''++''',他们都是varchar呀,
我都有点晕了,谁能帮我解答一下,谢谢

create proc info
@rdp varchar(50),
@topsl varchar
as
declare @s varchar(5000)
begin
set @s='SELECT top '+@topsl+' * from users where rdp= '''+@rdp+''' order by id desc'
exec (@s)
end
go

前台调用:
dim rdp
rdp="北京"
set rs = server.createobject("adodb.recordset")
rs.Open " exec info '"&rdp&"','5'",conn,1,1

[此贴子已经被作者于2007-4-18 8:51:20编辑过]


想学 .Net 了
2007-04-18 08:17
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
set @s='SELECT top '+@topsl+' * from users where rdp= '''+@rdp+''' order by id desc'
你这里是个字符串相加 @topsl为整形 你想让 'Select top ' + 5 +...
字符串加数字不报错???

2007-04-18 09:12
yzwt2004
Rank: 1
等 级:新手上路
帖 子:472
专家分:0
注 册:2006-1-18
收藏
得分:0 
不是呀,前面定义了
@rdp varchar(50),
@topsl varchar


set @s='SELECT top '+@topsl+' * from users where rdp= '''+@rdp+''' order by id desc'

前台是当字符来处理的:
rs.Open " exec info '"&rdp&"','5'",conn,1,1


完全通过了,没报错,为什么??

想学 .Net 了
2007-04-18 09:27
yzwt2004
Rank: 1
等 级:新手上路
帖 子:472
专家分:0
注 册:2006-1-18
收藏
得分:0 
刚特意试了一下,如果是这样就会出错了:
set @s='SELECT top '''+@topsl+''' * from users where rdp= '''+@rdp+''' order by id desc'

想学 .Net 了
2007-04-18 09:34
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
set @s='SELECT top '+@topsl+' * from users where rdp= '''+@rdp+''' order by id desc'


2007-04-18 10:27
yzwt2004
Rank: 1
等 级:新手上路
帖 子:472
专家分:0
注 册:2006-1-18
收藏
得分:0 
我知道,我是这样的写的了,但是有点想不明白??

为什么要用''',而有的地方就用一个'

能帮我解说一下吗?谢谢

想学 .Net 了
2007-04-18 10:52
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
收藏
得分:0 
单引号表示一个字符串的开始和结束 2个双引号是转义字符 表示这是一个单引号字符 而不是表示字符串的边界

where rdp= '''+@rdp+''' 这里 rdp = 后面的3个单引号中, 前2个单引号表示单引号字符 第3个表示这个字符串结束; @rdp+后面的3个,第一个表示字符串开始,后2个表示 单引号 这个字符

2007-04-18 11:47
快速回复:提出最新几条信息用存储过程,加top为什么不行??(怎么加了个条件又不行 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022341 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved