SQL server 动态查询(表名或字段动态),并且获取想得到的返回值结果-阿里云开发者社区

开发者社区> zting科技> 正文

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

简介:
+关注继续查看

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

       关 键 词:  
在编写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'

 

转载请注明出处[http://samlin.cnblogs.com/] 
作者赞赏
 


刚做的招标网:八爪鱼招标网 请大家多意见
分类: DataBase

本文转自Sam Lin博客博客园博客,原文链接:http://www.cnblogs.com/samlin/archive/2009/06/04/1496408.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10061 0
Sql Server 查询表中各列名称、表中列数
查询表名为tb_menu的所有列名 select name from syscolumns where id=object_id('tb_menu') 查询表名为tb_menu的所有列名个数 select count(name) from syscolumns where id=object_id('tb_menu') 或者 select count(sy
811 0
Oracle 查询对应表所有字段名称,可排除不想要的字段
由于Oracle varchar类型长度限制为4000 ,以下方法仅支持查询字段拼接后长度小于等于4000 第一种方法 select wm_concat(column_name) from user_tab_cols where table_name = upper(...
1070 0
MySQL查询表字段个数的两种方法
转自博客http://database.51cto.com/art/201011/234486.htm    MySQL查询表字段使我们经常会遇到的问题,下文对MySQL查询表字段的方法作了详细的说明介绍,希望对您能够有所帮助。
940 0
Sql server 查询数据库中包含某字段的所有的表
我们有时候会需要查询数据库中包含某字段的所有的表,去进行update,这时就可以用下面的SQL来实现: select object_name(id) objName,Name as colName from syscolumns where (name like'%此次写需要查询的字段名称%')an...
960 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13874 0
随笔:MySQL 查询事务状态字段说明
今天一个朋友想查看一下的MySQL层事务提交状态经历的过程,比如我们常说的prapare flush sync commit 几个阶段,但是找了一下发现视乎没有视图可以看到一共看了3个地方: information_schema.
675 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7360 0
+关注
3550
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载