zoukankan      html  css  js  c++  java
  • 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'

     

  • 相关阅读:
    调用父类和子类的__init__方法
    对git、github、gitee、gitlab的理解
    网鼎杯2020白虎组部分WriteUp
    比代码更难的事!看完这些思维习惯的人,都成为了架构师
    分布式数字身份DID调研
    如何优雅的实现分布式锁
    __init__构造函数
    付款明细数据
    总账凭证数据
    固定资产
  • 原文地址:https://www.cnblogs.com/samlin/p/1496408.html
Copyright © 2011-2022 走看看