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
关注此文的读者还看过:
- 2010-4-1 18:12:45 预防非法表D99_Tmp,kill_kk的建立
- 2008-4-23 15:53:39 SQL Server数据库超级管理员账号防护知识
- 2008-4-11 21:37:35 SQL Server 2005数据库镜像配置脚本示例
- 2008-4-4 9:12:54 讲解如何实现互联网上数据库的安全
- 2008-4-1 11:07:24 SQL 2005数据库转到SQL 2000的步骤讲解
- 2008-3-31 12:39:45 SQL Server自动生成日期加数字的序列号
- 2008-3-31 12:39:07 SQL Server 2000的数据库容量究竟是多大
- 2008-3-18 18:01:49 SQL Server 2005数据库的同义词Bug 讲解
|