专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » exec返回值:SQL server 动态查询(表名或字段动态) 并且获取想得到的返回值结果( exec sp_execute »正文

exec返回值:SQL server 动态查询(表名或字段动态) 并且获取想得到的返回值结果( exec sp_execute

来源: 发布时间:星期五, 2008年12月19日 浏览:2次 评论:0


在编写sql语句或存储过程中,难免会有碰到语句中表名或某字段名不确定,要根据条件来,这时,我们可考虑用SQL 提供sp_executesql ,,他可执行动态修改,删除,查询功能,至于此详细解释可到sql帮助文档中去查看,下面我将举个动态查询列子,包括表名及想查询字段均不确定:

tab:
(ID ) (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
declare @sql Nvarchar(1000)

declare @v numeric(9,2)
@rowname='A';
@seq=2 ;

@tab='tab';

@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'

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: