此文章主要是向大家讲述的是SQL server 动态查询,与获取想得到的返回值的结果,在编写sql语句或是存储过程的实际操作过程中,一般的情况下都会遇到语句中表名或某一字段名不确定,要根据条件来。
这时,我们可考虑用SQL 提供的sp_executesql 函数,,他可执行动态的修改,删除,查询功能,至于此函数的详细解释可到sql帮助文档中去查看,下面我将举一个SQL server 动态查询的列子,包括表名及想查询的字段均不确定:
- tab:
- (ID int) (A numeric(9,2)) (B numeric(9,2))
- 1 20.30 33.12
- 2 34.32 22.66
- 3 45.54 99.19
完成任务:
在不确定表名,及查询字段的情况下,根据传入的表名及字段及查询条件,获得对应返回结果:
1.seq条件
2.字段名称(A或B)
3.表名
要求函数返回值类型为numeric(9,2), 列如根据输入参数2取对应字段的值返回
做法如下:
- declare @tab varchar(10), @rowname varchar(10) ,@seq int
- declare @sql Nvarchar(1000)
- declare @v numeric(9,2)
- set @rowname='A';
- set @seq=2 ;
- set @tab='tab';
- set @sql='select @a='+@rowname+' from '+@tab+' where id='+rtrim(@seq)
- exec sp_executesql @sql,N'@a numeric(9,2) output',@v output
- select @v
结果
34.32
提醒:
对于动态表名及字段使用非常简单,但获取结果使用动态语句是有一定规则的,如上面的列子,需要把表名声明成Nvarchar的,然后执行动态语句时,声明其动态语句中变量前也要加N ,如N'@a
- numeric(9,2) output'
以上的相关内容就是对SQL server 动态查询的介绍,望你能有所收获。
【编辑推荐】
- SQL Server数据转换服务的妙招之一
- SQL Server数据库的妙招用法
- SQL Server数据转换服务利用与导入式格式的描述
- 确维护Sql Server表索引的2个步骤b
- SQL ServerCoalesce的大量使用的具体描述