• sqlserver自定义函数


    标量函数

    RETURNS 子句指定一种标量数据类型,则函数为标量值函数。

    语法

    Create function 函数名(参数)
    Returns 返回值数据类型
    [with {Encryption | Schemabinding }]
    [as]
    begin
    SQL语句(必须有return 变量或值)
    End

    释义:

    • with 子句指出了创建函数的选项,如果指出了 encryption 参数,则创建的函数是被加密的,函数定义的文本将以不可读的形式存储在 syscomments 表中,任何人都不能查看该函数的定义,包括函数的创建者和系统管理员。
    • begin 和 end 之间定义了函数题,该函数体中必须包括一条 return语句,用于返回一个值。函数返回 scalar_expression 表达式的值。
    • 用户定义函数的返回类型,可以是 SQL Server 支持的基本标量类型,但 text 、nterxt 、image 和 timestamp 除外。

    列子:

    CREATE FUNCTION funcGetResult(@ret int )  --传入了一个int类型的参数
    RETURNS int       --注意这里返回的是一个数据类型
    AS  
    BEGIN 
        declare @n int
        set @n = 3
        return @n* @ret
    END

    表值函数又分为两种:内嵌表值函数(行内函数)或多语句函数

    表值函数:内嵌表值函数

    如果 RETURNS 子句指定的 TABLE 不附带列的列表,则该函数为内嵌表值函数。

    语法

    create function 函数名(参数)
    returns table
    [with {Encryption | Schemabinding }]
    as
    return(
        一条SQL语句
    )

    释义:

    • returns table:此句仅包含关键字table ,表示此函数返回一个表。
    • with 子句指出了创建函数的选项,如果指出了 encryption 参数,则创建的函数是被加密的,函数定义的文本将以不可读的形式存储在 syscomments 表中,任何人都不能查看该函数的定义,包括函数的创建者和系统管理员。
    • return [(select_stmt)]:内嵌表值函数的函数体仅有一个return语句,并通过参数 select_stmt 指定的 select 语句返回内嵌值。

    列子:

    create function getExams(@written float)
    returns table as
    return(
        select s.stuno,s.stuname,s.brithday,e.written,e.lab
        from StuInfo s left outer join exam e
        on s.stuno=e.stuno
        where written >= @written
    )

    表值函数:多语句函数

    如果 RETURNS 子句指定的 TABLE 类型带有列及其数据类型,则该函数是多语句表值函数

    语法:

    --多句表格值函数
       create function 函数名(参数)
       returns 表格变量名table (表格变量定义)
       [with {Encryption | Schemabinding }]
    as
       begin
        SQL语句
       end
    --多句表格值函数包含多条SQL语句,至少有一条在表格变量中填上数据值

    例子:

    create function GetInfo(@name varchar(20))
    returns @cTable table(UserName varchar(10),UserPwd varchar(10))
    as
    begin
      insert into @cTable
      select userName,userPass from userinfo where username=@name
    return   --函数中最后一条语句必须是返回语句。
    end

    --调用 select * from GetInfo('admin') ------------ UserName UserPwd admin amin
  • 相关阅读:
    https协议介绍
    最详尽的fidder抓取https请求
    最详尽的datagrip使用
    datagrip安装与破解
    二叉树
    使用nexus搭建maven私库
    markdown利器-小书匠
    java开发-flyway
    .NetCore 入门
    .Net Core 实体生成器
  • 原文地址:https://www.cnblogs.com/qiuguochao/p/7119058.html
Copyright © 2020-2023  润新知