zoukankan      html  css  js  c++  java
  • Sqlserver 标量函数

         以前只是了解标量函数这个概念,感觉使用量好像并不大,等我真正做sql编码的时候才发现它的好处。简直太方便了实用了。

        我们知道在进行软件开发的时候要定义很多不同类型,每个类型又会分很多项。比如:

       

         搞前端都知道,这就是得下拉框。大多数这样得下拉搜索框都是动态得,也就是说我可以随时增减这里面得项数。而它得value值,一般也都是  value=(int  ) text=开关电源。

        牵扯到像这种类型得动态改变下拉框,那么一般数据都要保存得数据库中了,(当然你也可以自己定义一个js文件,改变js文件内容也可以做到),如果存入数据库中,那是怎末存得呢,直接存text值,那么后台取值一般都是去value值。所以,像这样数据库一般都是存value值。但页面显示得时候,用户需要看到得确实text值,而不是一个数字。像这种情况只能两个都存了。而实际我我们只存value只。比如局站类型:

          但是,开发一个软件像这种下拉框太多了,都这样存那就比较烦人了,而已不利于后期得管理和维护。那么要怎末做呢。 一般来说,都会建一个字典,专门用来存这些数据得字典。

     

    这样就可以动态改变项数,和改变每一项得参数了。

      但是如果这样做的话,我们在从数据库中取数据的时候,取得只是id,但是平台要显示真是类型名字 。比如局站类型:

    而这里就要做到我们今天要说的标量函数了。 我们在数据库中新建一个标量函数 Sys_ItemName:

    USE [SmartNet]
    GO
    /****** Object:  UserDefinedFunction [dbo].[Sys_ItemName]    Script Date: 2019/10/25 星期五 14:45:46 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER FUNCTION [dbo].[Sys_ItemName]
    (
    	@ItemValue varchar(30),
        @PValue varchar(30)
    )
    RETURNS nvarchar(50)
    AS
    BEGIN
    
    	DECLARE @ItemName nvarchar(50);
        set @ItemName=''
    
    	SELECT @ItemName = ItemName FROM Sys_DataItem WHERE ItemValue=@ItemValue and PValue=@PValue
    
    	RETURN @ItemName
    
    END
    

      而这个函数要取得数据就是我们上面建的通用字典了。

     标量函数中,我们定义的两个变量:@ItemValue varchar(30),@PValue varchar(30) 也就是,字典表中对应的ItemValue ,PValue 两列值了。

         那接下来就是如何用这个标量函数了:

         比如我们根据上面的局站信息表来做演示,查询局站信息表中的所有数据,这里我们只取这一列做演示:

        

     这里我们可以看到局站信息表中,局站类型的id了:和上面的数据库字典对应,(1代表 基站,2代表支局,3代表端局)。但是我做了我们正常搜索,但显示的都是id,页面列表显示总不能都是数字吧,那样只能自己知道是什么了。所以,如果用到标量函数,这个问题就迎刃而解了。

      大家可以看到上面的查询结果是真名了。

          其实说标量函数,也就是几句话而已,但是我想的是,要用实际场景的实际应用来演示会更容易了解!

       

         

  • 相关阅读:
    iOS 有用的代码片段
    iOS 限制软盘输入法
    UIlabel 遇到\n 换行iOS
    关于delegate 与 protocol 的理解 iOS
    ios 跳转到app store
    iOS 上下左右滑动手势
    求某段程序运行的高精度时间
    转载——GDB中应该知道的几个调试方法
    文章翻译——使用 GNU 的 GDB调试器,内存布局和栈——01
    第十章扩展——__cdecl 的压栈方式——printf
  • 原文地址:https://www.cnblogs.com/zpy1993-09/p/11738147.html
Copyright © 2011-2022 走看看