• Oracle数据库学习笔记_oracle标量型函数、内联表值型函数和多声明表值型函数创建及应用


    1.创建标量型UDF,语法如下:

    CREATE FUNCTION [OWNER_NAME] FUNCTION_NAME

    ([{@PARAMETER_NAME SCALAR_PARAMETER_DATA_TYPE [= DEFAULT]} [,…N]])

    RETURNS SCALAR_RETURN_DATA_TYPE

    [WITH <FUNCTION_OPTION> [,…N]]

    [AS]

    BEGIN

    FUNCTION_BODY

    RETURN SCALAR_EXPRESSION

    END

    <FUNCTION_OPTION> ::=

    {ENCRYPTION|SCHEMABLNDING}

    各参数说明如下:

    OWNER_NAME:指定UDF的所有者;

    FUNCTION_NAME:指定UDF的名称。DATABASE_NAME.OWNER_NAME.FUNCTION_NAME应是唯一的。

    @PARAMETER_NAME:定义一个或多个参数的名称。一个函数最多可以定义1024个参数,每个参数前用@符号标明。参数的作用范围是整个函数,参数只能替代常量,不能替代表名,列名或其他数据库对象的名称。UDF不支持输出参数。

    2.创建内联表值型UDF,语法如下:

    CREATE FUNCTION [OWNER_NAME] FUNCTION_NAME

    ([{@PARAMETER_NAME SCALAR_PARAMETER_DATA_TYPE [=DEFAULT]}[,…N]])

    RETURNS TABLE

    [WITH <FUNCTION_OPTION> [,… ]]

    [AS]

    RETURN [() SELECT-STMT[]]

    各参数说明如下:

    TABLE:指定返回值为一个表。

    SELECT-STMT:单个SELECT语句,确定返回的表是数据。

    其余参数与标量型用户自定义函数相同。

    例如:创建返回所有订购某类产品的公司信息函数

    USE PANGU

    GO

    CREATE FUNCTION ORDERFIRMS(@PRODUCTID VARCHAR(30))

    RETURNS TABLE

    AS

    RETURN (SELECT F.FIRM_ID,F_NAME,F_INTRO

    FROM FIRMS F, ORDERS O

    WHERE F.FIRM_ID=O.FIRM_ID

    AND O.OEDER_ID IN (SELECT O.ORDER_ID

    FROM PRODUCTS P, ORDERS O

    WHERE P.P_ID=@PRODUCTID

    AND P.P_ID)=O.P_ID))

    GO

    --调用函数

    SELECT * FROM ORDERFIRMS(10030001)

    运行结果如下:



    3.创建多声明表值型UDF,语法如下:

    CREATE FUNCTION [OWNER_NAME] FUNCTION_NAME

    ([{@PARAMETER_NAME SCALAR_PARAMETER_DATA_TYPE [= DEFAULT]}[,…N]])

    RETURNS @RETURN_VARIBLE TABLE <TABLE_TYPE_DEFINITION>

    [WITH <FUNCTION_OPTION> [,…N]]

    [AS]

    BEGIN

    FUNCTION_BODY

    RETURN

    END

    <TABLE_TYPE_DEFINITION> ::=

    ({COLUMN_DEFINITION|TABLE_CONSTRAINT} [,…N])

    各参数说明如下:

    @RETURN_VARIABLE:一个TABLE类型的变量,用于存储和累积返回的表中的数据行。

    其余参数与标量型UDF相同。

  • 相关阅读:
    网络常用的linux系统调用
    如何在Linux下写无线网卡的驱动【转】
    理解 Linux 配置文件【转】
    每天一个linux命令【转】
    宏定义编写技巧__调试技巧【原创】
    linux 高级字符设备驱动 ioctl操作介绍 例程分析实现【转】
    Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现 【转】
    初识CPU卡、SAM卡/CPU卡简介、SAM卡简介 【转】
    android中跨进程通讯的4种方式
    MISC混杂设备 struct miscdevice /misc_register()/misc_deregister()【转】
  • 原文地址:https://www.cnblogs.com/tongying/p/13203265.html
Copyright © 2020-2023  润新知