- 9
- 0
- 约6.38万字
- 约 50页
- 2021-09-28 发布于天津
- 举报
学习 SQL 应知道的动态 SQL 语句基本语法
1 、普通 SQL 语句可以用 Exec 执行
eg: Select * from tableName
Exec(select * from tableName)
Exec sp_executesql Nselect * from tableName -- 请注意字符串前一定要加 N
2 、字段名,表名,数据库名之类作为变量时,必须用动态 SQL
eg:
declare @fname varchar(20)
set @fname = FiledName
Select @fname from tableName -- 错误 ,不会提示错误,但结果为固定值 FiledName, 并
非所要。
Exec(select + @fname + from tableName) -- 请注意 加号前后的 单引号的边上加
空格
当然将字符串改成变量的形式也可
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 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 Server 数据库中经常用到的 identity 列
发布时间: 2008.03.24 04:59 来源:赛迪网 作者: Alice
【赛迪网- IT 技术报道】 SQL Server 中,经常会用到 Identity 标识列,这种自增长的字
段操作起来的确是比较方便。但它有时还会带来一些麻烦。
示例一 :当表中被删除了某些数据的时候, 自增长列的编号就不再是一个连线的数列。
这种时候我们可以用以下方案来解决。
SET IDENTITY_INSERT [TABLE] [ON|OFF]
允许将显式值插入表的标识列中, 当设置为 ON 时,这时可能在 INSERT 操作时手工指
定插入到标识列中的编号,同时必须在操作完成后,将 IDENTITY_INSERT 还原成 OFF ,否
则下次插入的时候必须指定编号,那不然就无法完成 INSERT 操作。
示例二: 当表中的记录被全部删除,但此时标识列的值越来越大的时候,如果不加以重
置,它还会无休止的增长。这个时候我们就要用到:
DBCC CHECKIDENT(TABLE, [RESEED|NORESEED], [1])
原创力文档

文档评论(0)