| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 763 人关注过本帖
标题:此語句為何無法執行
只看楼主 加入收藏
rgbtdkjcel
Rank: 1
等 级:新手上路
帖 子:294
专家分:0
注 册:2007-3-26
结帖率:50%
收藏
 问题点数:0 回复次数:7 
此語句為何無法執行
declare @int int
set @int=1
exec('select top'+@int+'* from sql')

請問。為何執行exec時會報錯呢?請問是什麼原因呢?
2009-09-15 17:09
gdy0349
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:上海
等 级:版主
威 望:11
帖 子:223
专家分:676
注 册:2008-11-12
收藏
得分:0 
这还真是个难题啊,应该是sqlserver函数里不支持变量,问题出在top上
2009-09-16 12:26
笨鸟
Rank: 5Rank: 5
等 级:职业侠客
威 望:9
帖 子:237
专家分:309
注 册:2006-1-18
收藏
得分:0 
declare @int int
set @int=1
exec('select top '+@int+' * from TabName')
2009-09-16 14:53
gdy0349
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:上海
等 级:版主
威 望:11
帖 子:223
专家分:676
注 册:2008-11-12
收藏
得分:0 
回复3楼
我想你最好先试一下看能否执行,你上面写的不和楼主一样吗?
2009-09-16 16:54
笨鸟
Rank: 5Rank: 5
等 级:职业侠客
威 望:9
帖 子:237
专家分:309
注 册:2006-1-18
收藏
得分:0 
看看字符串空格细节的差异。。

楼主的:
declare @int int
set @int=1
exec('select top'+@int+'* from sql')

3楼的:
declare @int int  
set @int=1  
exec('select top '+@int+' * from TabName')
2009-09-17 06:44
zhaoxili
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:327
专家分:479
注 册:2009-1-3
收藏
得分:0 
呵呵 对啊 楼主的是没有注意到语句的空格导致在运行时候 语句连接时候没误认为是一个  所以无法运行   楼主最好以后对于这样需要拼接的语句时候,看看是否存在拼接丢掉空格的问题   这个问题其实是很容易出现 但是又不容易找出的问题
2009-09-19 15:45
czg123698741
Rank: 2
等 级:论坛游民
帖 子:348
专家分:84
注 册:2009-3-4
收藏
得分:0 
2009-09-22 22:50
Vitamin1999
Rank: 2
等 级:论坛游民
威 望:1
帖 子:30
专家分:66
注 册:2009-9-23
收藏
得分:0 
楼主出现三个错误
1,数据库里是优先处理数字的   你需要把@int强转成varchar(20) 然后才能拼装
2,SQL里面的执行的 EXEC (@sql) @sql位置不支持变量的拼装,它只支持符串的拼装
3,字符串之间的空格问题
所以要想处理这样的事情,只能在外面先把串拼好了然后再执行
declare @int int,@sql varchar(100)
set @int=1  
set @sql = 'select top ' + cast(@int as varchar(20)) + ' * from myTable'
exec (@sql)

2009-09-26 15:26
快速回复:此語句為何無法執行
数据加载中...
 
   



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

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