zoukankan      html  css  js  c++  java
  • SQLServer自定义函数简单演示

    CREATE FUNCTION [ schema_name. ] function_name 
    ( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type 
        [ = default ] [ READONLY ] } 
        [ ,...n ]
      ]
    )
    RETURNS return_data_type
        [ WITH <function_option> [ ,...n ] ]
        [ AS ]
        BEGIN 
                    function_body 
            RETURN scalar_expression
        END
    [ ; ]
    
    --创建自定义函数
    create function dbo.AAA(@m_str as nvarchar(80))  --参数
    returns nvarchar(80) --返回值类型
    as 
    begin  
        declare @i nvarchar(80) --声明变量
        if @m_str='0'  
           set @i='A'  --赋值
        if @m_str='1'  
           set @i='B'  
        return (@i)  --返回i的值
    end  
    
    --调用自定义函数
    declare @SmsContent varchar(500)   --声明变量 
    set @SmsContent = '1'  --赋值
    select dbo.AAA(@SmsContent) --调用
    //ADO执行
    string str = (string)SQLHelper.ExecuteScalar("select dbo.AAA('0') ");

    参数说明:

    schema_name
    用户定义函数所属的架构的名称。
    function_name
    用户定义函数的名称。函数名称必须符合有关标识符的规则,并且在数据库中以及对其架构来说是唯一的。
    注意:
    即使未指定参数,函数名称后也需要加上括号。
    @ parameter_name
    用户定义函数中的参数。可声明一个或多个参数。
    一个函数最多可以有 2,100 个参数。执行函数时,如果未定义参数的默认值,则用户必须提供每个已声明参数的值。
    通过将 at 符号 (@) 用作第一个字符来指定参数名称。参数名称必须符合有关标识符的规则。参数是对应于函数的局部参数;其他函数中可使用相同的参数名称。参数只能代替常量,而不能用于代替表名、列名或其他数据库对象的名称。

    注意:
    在传递存储过程或用户定义函数中的参数时,或在声明和设置批语句中的变量时,不会遵守 ANSI_WARNINGS。例如,如果将变量定义为 char(3) 类型,然后将其值设置为多于三个字符,则数据将截断为定义大小,并且 INSERT 或 UPDATE 语句可以成功执行。
    [ type_schema_name. ] parameter_data_type
    参数的数据类型及其所属的架构,后者为可选项。对于 Transact-SQL 函数,允许使用除 timestamp 数据类型之外的所有数据类型(包括 CLR 用户定义类型和用户定义表类型)。对于 CLR 函数,允许使用除 text、ntext、image、用户定义表类型和 timestamp 数据类型之外的所有数据类型(包括 CLR 用户定义类型)。不能将非标量类型 cursor 和 table 指定为 Transact-SQL 函数或 CLR 函数中的参数数据类型。
    如果未指定 type_schema_name,则数据库引擎将按以下顺序查找 scalar_parameter_data_type:
    包含 SQL Server 系统数据类型名称的架构。
    [ = default ]
    参数的默认值。如果定义了 default 值,则无需指定此参数的值即可执行函数。
    注意:
    可以为除 varchar(max) 和 varbinary(max) 数据类型之外的 CLR 函数指定默认的参数值。
    如果函数的参数有默认值,则调用该函数以检索默认值时,必须指定关键字 DEFAULT。此行为与在存储过程中使用具有默认值的参数不同,在后一种情况下,不提供参数同样意味着使用默认值。
    READONLY
    指示不能函数定义中更新或修改参数。如果参数类型为用户定义的表类型,则应指定 READONLY。
    return_data_type
    标量用户定义函数的返回值。对于 Transact-SQL 函数,可以使用除 timestamp 数据类型之外的所有数据类型(包括 CLR 用户定义类型)。对于 CLR 函数,允许使用除 text、ntext、image 和 timestamp 数据类型之外的所有数据类型(包括 CLR 用户定义类型)。不能将非标量类型 cursor 和 table 指定为 Transact-SQL 函数或 CLR 函数中的返回数据类型。
    function_body
    指定一系列定义函数值的 Transact-SQL 语句,这些语句在一起使用不会产生负面影响(例如修改表)。function_body 仅用于标量函数和多语句表值函数。
    在标量函数中,function_body 是一系列 Transact-SQL 语句,这些语句一起使用的计算结果为标量值。
    在多语句表值函数中,function_body 是一系列 Transact-SQL 语句,这些语句将填充 TABLE 返回变量。
    scalar_expression
    指定标量函数返回的标量值。

  • 相关阅读:
    Hadoop 的版本问题
    SSH 端口转发原理
    KM算法
    最大流算法小结
    pku 2195 KM算法求最小权二分匹配
    SAP(最短增广路算法) 最大流模板
    最大流模板
    pku 1459 最大流 SAP
    pku Drainage Ditches 简单最大流 直接套模板 注意可能有重边
    推荐:吴军 谷歌黑板报 《浪潮之颠》
  • 原文地址:https://www.cnblogs.com/genesis/p/4939851.html
Copyright © 2011-2022 走看看