1:普通SQL语句可以用Exec执行
eg: Select * from tableName
Exec(\\\'select * from tableName\\\')
sp_executesql N\\\'select * from tableName\\\' -- 请注重字符串前一定要加N
2:字段名,表名,数据库名之类作为变量时,必须用动态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 -- 此句准确,
3: 输出参数
eg:
declare @num,
@sqls
set @sqls=\\\'select count(*) from \\\' + @servername + \\\'.a.dbo.b\\\'
exec(@sqls)
我如何能将exec执行的结果存入变量@num中
declare @num int,
@sqls nvarchar(4000)
set @sqls=\\\'select @a=count(*) from \\\'+@servername+\\\'.a.dbo.b\\\'
exec sp_executesql @sqls,N\\\'@a int output\\\',@num output
select @num
返回类别: 教程
上一教程: SQL数据操作基础(中级)10
下一教程: 痛下决心:微软公布放弃SQL Ser2005
您可以阅读与"动态SQL语句"相关的教程:
· 动态SQL语句
· 动态SQL四种类型的语句格式
· SQL查询语句精华使用简要
· SQL核心语句
· 简化SQL语句一例