zoukankan      html  css  js  c++  java
  • 存储过程——存储过程与函数(四)

    • 函数的定义:

    于编程语言中的函数类似,sql server 用户定义函数是接受参数,执行操作(如复杂运算)并将操作结果以值的形式返回的例程。返回值可以是单个标量值或结果集。

    • 函数的优点:
    1. 允许模块化程序设计
    2. 执行速度快
    3. 减少网络流量
    • 函数分类
    1. 系统函数
    2. 用户自定义函数
    • 标量函数
    • 表值函数

    上面说了这么多理论化的东西,下面介绍一个例子来说明:

     创建一个根据产品类型来查询产品信息的函数(表值函数)

    -- =============================================
    -- Author:        <Author,,Name>
    -- Create date: 2014-04-11 21:10:42
    -- Description:    根据产品类型查询产品
    -- =============================================
    CREATE FUNCTION [dbo].[FN_getproductbyCondition]
    (    
        -- Add the parameters for the function here
        @condition nvarchar(200)
    )
    RETURNS TABLE 
    AS
    RETURN 
    (
        select * from product where Type=@condition
    )

    调用函数如下:

    select * FROM FN_getproductbyCondition(2)
    --实际上等同于
    select * from [dbo].[product] where Type=2

    标量函数建立

    CREATE FUNCTION FN_getproducttypebyId
    (
        -- Add the parameters for the function here
        @typeid int
    )
    RETURNS nvarchar(50)
    AS
    BEGIN
        -- Declare the return variable here
        --返回值
        DECLARE @typeName nvarchar(50)
    
        -- Add the T-SQL statements to compute the return value here
        --执行sql语句
        SELECT @typeName=Name from [dbo].[productType] where id=@typeid
    
        -- Return the result of the function
        --返回结果
        RETURN @typeName
    
    END
    GO


    标量函数调用

    --测试标量函数
    SELECT [ID]
          ,[Name]
          ,[Price]
          ,[Address]
          ,[Type]=dbo.FN_getproducttypebyId(Type)
      FROM [wisdominfo].[dbo].[product]

    上述调用函数类似于调用了联合查询,或子查询

    • 函数在存储过程应用如下
    CREATE PROCEDURE GetProinfo 
    AS
    BEGIN
        SELECT [ID]
          ,[Name]
          ,[Price]
          ,[Address]
          ,[Type]
          ,TypeName=dbo.FN_getproducttypebyId(Type)
      FROM [wisdominfo].[dbo].[product]
    END
    GO

    以上是个人总结部分,由不太详细指出,希望大家指出,本人将继续改进,提交代码质量,文章可读性...

  • 相关阅读:
    后端结对编程报告(2018.6.6)
    Burn Down Chart(2018.6.4~2018.6.10)
    C#多线程List的非线程安全性
    C#泛型参数多线程与复杂参数多线程
    Java学习之App开发公司手机端设想
    Java学习之SpringBoot整合SSM Demo
    Java学习之Mysql结构优化
    Java学习之Dubbo+ZooKeeper分布式服务Demo
    C# 面向切面编程--监控日志记录方案
    C# 通用类型转换方法
  • 原文地址:https://www.cnblogs.com/tuqun/p/3657684.html
Copyright © 2011-2022 走看看