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

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:

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,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
25天前
|
SQL 安全 算法
【SQL server】玩转SQL server数据库:第四章 数据库安全性
【SQL server】玩转SQL server数据库:第四章 数据库安全性
66 12
|
8天前
|
SQL 数据可视化 算法
SQL Server聚类数据挖掘信用卡客户可视化分析
SQL Server聚类数据挖掘信用卡客户可视化分析
|
20小时前
|
SQL 安全 数据库
SQL Server 备份和还原
SQL Server 备份和还原
|
21小时前
|
SQL 存储 安全
SQL Server 权限管理
SQL Server 权限管理
|
21小时前
|
SQL 自然语言处理 搜索推荐
SQL Server 索引和视图
SQL Server 索引和视图
|
21小时前
|
SQL 数据库
Sql server 表管理(创建 修改 删除)
Sql server 表管理(创建 修改 删除)
|
6天前
|
SQL 机器学习/深度学习 数据采集
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
数据分享|SQL Server、Visual Studio、tableau对信贷风险数据ETL分析、数据立方体构建可视化
|
7天前
|
SQL 关系型数据库 数据库
SQL 42501: Postgresql查询中的权限不足错误
SQL 42501: Postgresql查询中的权限不足错误
|
7天前
|
SQL 数据采集 数据挖掘
SQL Server仓储物流公司visual studio发货数据仓库设计
SQL Server仓储物流公司visual studio发货数据仓库设计