动态sql语句基本语法

更新时间:2023-06-08 08:48:20 阅读: 评论:0

动态sql语句基本语法
1 普通sql语句可以⽤exec执⾏,如:
SELECT * FROM video
EXEC ('SELECT * FROM video')
EXEC sp_executesql N'SELECT * FROM video' --字符串前⼀定要加N
2 字段名,表名,数据库名之类作为变量时,必须⽤动态sql
DECLARE @fname NVARCHAR(20)
情的四字成语SET @fname = 'Name'
SELECT @fname FROM Video
设问句是什么--以上结果为Name,并⾮所要
可以使⽤这样动态拼接:
司机加油
EXEC(' lect ' + @fname + ' from video')--注意加号前后的单引号都加上空格
--当然将字符串形式改成变量也可以
DECLARE @sql NVARCHAR(MAX)
DECLARE @fname NVARCHAR(20)
三撇SET @fname = '[SeoFilename]'
t @sql = 'SELECT ' +  @fname + ' FROM Video AS v'
EXEC (@sql)--⼀定要记得这个⼩括号,这⾥的@sql是varchar类型可以
注意:也可以使⽤ exec sp_executesql 形式
EXEC sp_executesql @sql -- 注意:@sql必须是ntext,nchar,nvarchar类型,不可以是varchar类型
3 输⼊或者输出参数
动态查询语句变量:必须为ntext,nchar,nvarchar类型
设置动态语句中的查询字符串,必须为ntext,nchar,nvarchar类型招聘词语
declare @input_id int--定义需传⼊动态语句的参数的值,参数1
declare @input_name varchar(20)--定义需传⼊动态语句的参数的值,参数2
DECLARE @QueryString NVARCHAR(MAX)--动态语句变量
DECLARE @paramstring NVARCHAR(200)--设置动态语句中的动态字符串参数
--                              --
t @QueryString='lect * from Video  where id=@id and SeoFilename=@name'  --id与name为字段名,@id与@name为要传⼊的参数t @paramstring='@id int,@name varchar(20)' --设置动态语句中参数的定义的字符串,多个参数⽤"
--
t @input_id =2  --设置需传⼊动态语句的参数的值为1
生物质材料t @input_name='新增视频⼀'  --设置需传⼊动态语句的参数的值为"张三"
exec sp_executesql @querystring,@paramstring,@id=@input_id,@name=@input_name --请注意参数的顺序
4 输出参数
DECLARE @num INT,@sql NVARCHAR(MAX)
SET @sql = 'lect count(1) from Video'
EXEC(@sql)心灵美的作文
如何将总数的结果返回给⼀个变量呢?
DECLARE @QueryString NVARCHAR(MAX)
DECLARE @ParamString NVARCHAR(200)
DECLARE @output_result INT --查询结果返回给它
SET @QueryString = ' lect @totalcount = count(1) from video '--定义@totalcount为输出结果参数
SET @ParamString = ' @totalcount  int output '
EXEC sp_executesql @QueryString,@ParamString,@totalcount = @output_result OUTPUT
SELECT @output_result AS '返回总数'
另外,动态语句查询的结果集要输出的话,可以使⽤临时表的⽅法
先判断临时表是否存在
IF object_id('[tempdb].[dbo].#tmp') IS NOT NULL --判断临时表#tmp是否存在,存在则删除
drop table #tmp
  IF object_id('[tempdb].[dbo].#tmp') IS NOT NULL --判断临时表#tmp是否存在,存在则删除
  drop table #tmp
  SELECT * INTO #tmp FROM Video AS v
  SELECT * FROM #tmp AS t
sqlrver数据库中⽤到的Identity列
当表中被删除了某些数据,⾃增长的编号就不再是⼀个连线的数据
可以使⽤ SET IDENTITY_INSERT Video ON
允许将显式值插⼊到表的标⽰列中,当设置为on,这时可能在inrt 操作时候⼿动指定插⼊到标⽰列中的序号,,同时必须在完成操作后,将IDENTITY_INSERT 还原成off
否则,下次插⼊的时候必须指定编号,不然就⽆法完成Inrt操作
当表中的记录被全部删除,但此时标⽰列的值很⼤很⼤,如果不重置,会⽆休⽌的增长,这个时候可以⽤:DBCC CHECKIDENT(Video, [RESEED|NORESEED], [1]) 进⾏重置
--重置表中标识列中种⼦值
DBCC CHECKIDENT(Video, [RESEED|NORESEED], [1])八九雁来
--获取当前表中标⽰列的种⼦值
DBCC CHECKIDENT(Video,NORESEED)

本文发布于:2023-06-08 08:48:20,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/901260.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语句   动态   参数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图