这个查询如何写? declare @topp intdeclare @str nvarchar(256)set @topp=2 select @str='select top '+@topp+' n_id from tab1'exec @str 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 exec('select top '+@topp+' n_id from tab1') --top不支持变量declare @topp intset @topp=2 set rowcount @toppselect n_id from tab1 --top不支持变量declare @topp intset @topp=2 set rowcount @toppselect n_id from tab1 用动态语句:1:普通SQL语句可以用Exec执行eg: Select * from tableName Exec('select * from tableName') sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N2:字段名,表名,数据库名之类作为变量时,必须用动态SQLeg: declare @fname varchar(20) set @fname = '[name]'Select @fname from sysobjects -- 错误Exec('select ' + @fname + ' from sysobjects') -- 请注意 加号前后的 单引号的边上要加空格exec sp_executesql N' select ' + @fname + ' from sysobjects' 当然将字符串改成变量的形式也可 declare @s varchar(1000) set @s = 'select ' + @fname + ' from sysobjects' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from sysobjects' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确, declare @topp varchar(20) --注意定义为字符变量declare @sql varchar(1000)set @topp='2' set @sql='select top ' + @topp + ' n_id from tab1'exec (@sql) ---执行动态sql语句 初级问题 EXEC SQL SELECT 的问题 求BI方面的经典图书,(包括入门) 要设计一个数据库系统,但不会画E-R图,求助,谢谢啦 非常急!!!!!请教高手SQL问题 全文检索后,怎样得到列的部分内容??? 请教高手一个SQL查询试题 请看看这条sql怎么优化?谢谢 请问谁有SQL SERVER 2000 的电子资料 sql语句问题(ado+sqlserver) 请问 close database 是不是也可起到 commit work 的作用? 就是说只用 close database 而不用 commit work 可以完成对表的修改吗? 请问 关于distinct的问题
set @topp=2
set rowcount @topp
select n_id from tab1
set @topp=2
set rowcount @topp
select n_id from tab1
1:
普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec('select * from tableName')
sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N2:
字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare @fname varchar(20)
set @fname = '[name]'
Select @fname from sysobjects -- 错误
Exec('select ' + @fname + ' from sysobjects') -- 请注意 加号前后的 单引号的边上要加空格
exec sp_executesql N' select ' + @fname + ' from sysobjects'
当然将字符串改成变量的形式也可
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确,
declare @sql varchar(1000)
set @topp='2' set @sql='select top ' + @topp + ' n_id from tab1'
exec (@sql) ---执行动态sql语句