• 数据库 - 创建数据库、表、函数等


    1、创建自定义函数

    • 自定义函数分为:标量值函数或表值函数两种。
      • 标量值函数:如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数。
      • 表值函数:如果 RETURNS 子句指定 TABLE,则函数为表值函数。
    • 表值函数又分为两种:内嵌表值函数(行内函数)或多语句函数
      • 如果 RETURNS 子句指定的 TABLE 不附带列的列表,则该函数为内嵌表值函数。
      • 如果 RETURNS 子句指定的 TABLE 类型带有列及其数据类型,则该函数是多语句表值函数

    1.1 函数语法:

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

    1.2 标量值函数实例:

    CREATE FUNCTION Foo(@ret int )  --传入了一个int类型的参数
    RETURNS int       --注意这里返回的是一个数据类型
    AS  
    BEGIN 
        declare @n int
        set @n = 3
        return @n* @ret
    END
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.3 内嵌表值函数语法:

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

    eg

    create function GetUser(@name varchar(10))
    returns table
    as
    return select * from userInfo where userName=@name
    调用:
    select * from getuser('admin')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.4 多语句表值函数语法:

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

    eg

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    C++ 多态与虚拟:Class 语法语义
    标准的听觉检测环境应满足哪些条件?
    React ISR 如何实现 - 最后的 Demo
    DAY29:Vulnhub--靶机实战
    mysql 备库重做
    流密码:RC4
    java面试——JVM(内存结构、垃圾回收、内存溢出)
    实体和json
    js正则匹配获取分组和正向反向的区别
    阿里是如何使用分布式架构的?阿里内部学习手册分享
  • 原文地址:https://blog.csdn.net/Never_say_die_kj/article/details/126051632