- 1 、普通SQL语句可以用Exec执行
- eg: Select * from tableName
- Exec('select * from tableName')
- Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N
- -- 一定要大写的N
- 2、字段名,表名,数据库名之类作为变量时,必须用动态SQL
- eg:
- declare @fname varchar(20)
- set @fname = 'FiledName'
- Select @fname from tableName -- 错误,不会提示错误,但结果为固定值FiledName,并非所要。
- Exec('select ' + @fname + ' from tableName') -- 请注意 加号前后的 单引号的边上加空格
- 大气象添加:top后面跟参数时,需要这样用。
- declare @CustomerID int
- set @CustomerID = 10
- exec('select top ' + @CustomerID + '* from Orders')
- 当然将字符串改成变量的形式也可
- declare @fname varchar(20)
- set @fname = 'FiledName' --设置字段名
- declare @s varchar(1000)
- set @s = 'select ' + @fname + ' from tableName'
- Exec(@s) -- 成功
- exec sp_executesql @s -- 此句会报错
- 大气象添加:简化一下
- declare
- @s varchar(20)
- set
- @s='select * from Orders'
- exec(@s)
- declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
- set @s = 'select ' + @fname + ' from tableName'
- Exec(@s) -- 成功
- exec sp_executesql @s -- 此句正确
- 3、输出参数
- declare @num int,
- @sqls nvarchar(4000)
- set @sqls='select count(*) from tableName'
- exec(@sqls)
- --如何将exec执行结果放入变量中?
- declare @num int,
- @sqls nvarchar(4000)
- set @sqls='select @a=count(*) from tableName '
- exec sp_executesql @sqls,N'@a int output',@num output
- select @num
- 此外,如果想要在SQL语句 字符串中使用 单引号 '' 可以 使用 ''''
学习SQL应知道的动态SQL语句基本语法(阅读)
最新推荐文章于 2022-11-20 18:15:50 发布