SQL server 动态查询(表名或字段动态),并且获取想得到的返回值结果( exec sp_executesql )
2008-12-17 11:25
375 查看
在编写sql语句或存储过程中,难免会有碰到语句中表名或某一字段名不确定,要根据条件来,这时,我们可考虑用SQL 提供的sp_executesql 函数,,他可执行动态的修改,删除,查询功能,至于此函数的详细解释可到sql帮助文档中去查看,下面我将举一个动态查询的列子,包括表名及想查询的字段均不确定:
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'
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 动态查询(表名或字段动态),并且获取想得到的返回值结果
- SQLserver动态查询(表名或字段动态),并且获取想得到的返回值结果execsp_execute
- SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 及动态查询中的标识符函数QUOTENAME
- 获取动态SQL查询语句返回值(sp_executesql)
- sqlserver中sp_executesql使用实例(获取动态sql输出结果)
- SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
- 获取动态SQL查询语句返回值(sp_executesql)
- Oracle数据库中字段定义为Char类型,Hibernate用该字段进行动态绑定参数查询,获取不到结果的问题
- sqlserver中sp_executesql使用实例(获取动态sql输出结果)
- SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
- SQL SERVER 动态执行SQL -- sp_executesql与EXEC
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
- AutoCAD.Net/C#.Net QQ群:193522571 LinQ获取当前查询结果的字段名,并且遍历各字段值
- 多条数据查询时取MAX值并且获取对应的其它字段的值(初级版)
- spring-data-mongodb查询结果返回指定字段
- Hibernate hql 查询指定字段并获取结果集
- 获取动态SQL的返回结果
- MSSQOSERVER 获取执行动态语句返回的结果