exec('select top ' + cast(@nValue as varchar) +' * from [mytab]')
这个查询语句中带有两个top, 如select top 20 * from [mytab] where [id] not in (select top 10 * from [mytab]) 这样使用set来限定返回数恐怕不行,看来只有用生成字符串来执行了,不知用生成字符串执行是否会影响执行效率呢?
create procedure test @a int as exec('select top '+@a+'* from table')
create procedure test @a int as exec('select top '+@a+'* from table')@a 的类型要变一下
create procedure AAAA @top INT AS DECLARE @SQL SET @SQL ='select top ' + cast(@top as varchar(10)) + ' * FROM TABLE' EXECUTE(@SQL)
类型转换 convert(varchar,@top)
不需要阿.我试了 exec test 10 能得到结果
楼主哇!你看看你原来的你发的贴!我不是写了吗?????????你为什么要浪费你的分数呢???? http://expert.csdn.net/Expert/TopicView2.asp?id=1522778&datebasetype=nowexec('SELECT Top '+cast(@每页大小 as varchar)+' * FROM T WHERE SortField NOT IN (SELECT TOP '+cast(@每页大小* @页号 as varchar)+' SortField from T )')
如select top 20 * from [mytab]
where [id] not in (select top 10 * from [mytab])
这样使用set来限定返回数恐怕不行,看来只有用生成字符串来执行了,不知用生成字符串执行是否会影响执行效率呢?
as
exec('select top '+@a+'* from table')
as
exec('select top '+@a+'* from table')@a 的类型要变一下
@top INT
AS
DECLARE @SQL
SET @SQL ='select top ' + cast(@top as varchar(10)) + ' * FROM TABLE'
EXECUTE(@SQL)
convert(varchar,@top)
exec test 10 能得到结果
http://expert.csdn.net/Expert/TopicView2.asp?id=1522778&datebasetype=nowexec('SELECT Top '+cast(@每页大小 as varchar)+' * FROM T WHERE SortField NOT IN (SELECT TOP '+cast(@每页大小* @页号 as varchar)+' SortField from T )')