Oracle学习(十) 用户自定义函数

用户自定义函数是存储在数据库中的代码块,可以把值返回到调用程序。函数的参数有3种类型:

(1)in参数类型:表示输入给函数的参数,该参数只能用于传值,不能被赋值。

(2)out参数类型:表示参数在函数中被赋值,可以传给函数调用程序,该参数只能用于赋值,不能 用于传值。

(3)in out参数类型:表示参数既可以传值,也可以被赋值。

1.函数的创建

语法格式:

    create [or replace] function functionName
    (
        parameterName1 mode1 dataType1,
        parameterName2 mode2 dataType2,
        ...
    )
    return returnDataType
    is/as
    begin
        function_body
        return expression
    end functionName; -- 结束函数的声明,也可以直接写end不加函数名。
--其中mode1、mode2表示参数类型,dataType表示参数的数据类型。returnDataType表示返回值类型。

示例1:

create or replace function explainParameter -- 定义一个名为explainParameter的函数
(
    inParam in char,    --  定义该参数类型为in参数类型,只能用于赋值
    outParam out char,  --  out参数类型,只能用于传值
    inAndOutParam in out char   --  in out参数类型,既能赋值,又能传值
)
return char     --  表示函数的返回类型为char类型
as      -- 表示函数体部分
    returnChar char;        --  声明零时变量,这是可有可无的,这里声明返回变量为char类型的

returnChar变量。
begin
    inParam := 'Hello World';   -- 这是错误的,in类型的参数只能用来传值,不能赋值
    outParam := 'Hello World'; -- 这是正确的,out类型的参数可以用来被赋值
    inAndOutParam := 'Hello World'; -- 这是正确的,in out参数既可以用来传值,又可以被赋值
    inAndOutParam := outParam; -- 这是错误的,out参数不能用来传值
    return(returnChar); -- 返回returnChar,也可以不要括号,直接写return returnChar。
end explainParameter; -- 结束explainParameter函数,表示explainParameter函数声明结束,也可以

直接写end,不加函数名。

示例2:

CREATE OR REPLACE
FUNCTION testFunc (num1 IN NUMBER, num2 IN NUMBER)
RETURN NUMBER
AS
    num3 number;
    num4 number;
    num5 number;
BEGIN
    num3 := num1 + num2;
    num4 := num1 * num2;
    num5 := num3 * num4;
    RETURN num5;
END;

2.函数的调用

自定义函数的调用方法跟系统内置函数的调用方法相同,可以直接在select语句中调用,也可以在函 数中调用,如下:

select testFunc(1,2) from tableName;

num := testFunc(1,2);

3.函数的删除

自定义函数的删除方法类似于表的删除,语法格式如下:

drop function [schema.]functionName;

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索函数
, 参数
, return
, 类型
, char
, 传值调用
, out
, select传值
, 赋值类型
, 函数参数类型
, 函数传值
, 传值参数
, 传值赋值
plupload自定义参数
,以便于您获取更多的相关知识。

时间: 2024-09-19 03:09:39

Oracle学习(十) 用户自定义函数的相关文章

在ASP.NET 2.0中操作数据之七十四:用Managed Code创建存储过程和用户自定义函数(下部分)_自学过程

第八步:从表现层调用Managed Stored Procedures 当对数据访问层和业务逻辑层进行扩充以支持调用GetDiscontinuedProducts 和 GetProductsWithPriceLessThan这2种managed stored procedures后,我们可以在一个ASP.NET页面里展示这些存储过程的结果了. 打开AdvancedDAL文件夹里的ManagedFunctionsAndSprocs.aspx页面,从工具箱拖一个GridView控件到设计器,设其ID

ASP.NET 2.0数据教程之七十五: 用Managed Code创建存储过程和用户自定义函数

返回"ASP.NET 2.0数据教程目录" ASP.NET 2.0数据教程之七十五: 用Managed Code创建存储过程和用户自定义函数(下) 第八步:从表现层调用Managed Stored Procedures 当对数据访问层和 业务逻辑层进行扩充以支持调用GetDiscontinuedProducts 和 GetProductsWithPriceLessThan这2种managed stored procedures后,我们可以 在一个ASP.NET页面里展示这些存储过程的结

[Python学习] 专题一.函数的基础知识

        最近才开始学习Python语言,但就发现了它很多优势(如语言简洁.网络爬虫方面深有体会).我主要是通过<Python基础教程>和"51CTO学院 智普教育的python视频"学习,在看视频中老师讲述函数知识的时候觉得非常不错,所以就写了第一篇Python学习的文章分享给大家.主要内容:        1.Python安装与基本输入输出,print()函数和raw_input()函数简单用法.         2.我根据视频中学到的知识,讲解函数的基本知识:

在ASP.NET 2.0中操作数据之七十三:用Managed Code创建存储过程和用户自定义函数(上部分)_自学过程

导言: 数据库,比如Microsoft's SQL Server 2005使用Transact-Structured Query Language (T-SQL)来插入.修改.检索数据.绝大多数数据库系统都包含constructs来对一系列的SQL statements进行分组,这些statements可以作为单独的单元来执行.存储过程就是一个例子,另一个例子是用户自定义函数(UDFs), 我们将在第9步进行详细的探讨. SQL是设计来处理一系列数据的. SELECT,UPDATE,和DELET

SQL中Charindex和Oracle中对应的函数Instr对比_oracle

sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) >0 instr(MUserID,'administrator',1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识. Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: Instr(string, su

Oracle存储过程和自定义函数详解_oracle

概述 PL/SQL中的过程和函数(通常称为子程序)是PL/SQL块的一种特殊的类型,这种类型的子程序可以以编译的形式存放在数据库中,并为后续的程序块调用. 相同点: 完成特定功能的程序 不同点:是否用return语句返回值. 举个例子: create or replace procedure PrintStudents(p_staffName in xgj_test.username%type) as cursor c_testData is select t.sal, t.comm from

用户自定义函数

   除了使用系统提供的函数外,用户还可以根据需要自定义函数.用户自定义函数(User Defined Functions)是SQL Server 2000 新增的数据库对象,是SQL Server 的一大改进.    用户自定义函数不能用于执行一系列改变数据库状态的操作,但它可以像系统函数一样在查询或存储过程等的程序段中使用,也可以像存储过程一样通过EXECUTE 命令来执行.用户自定义函数中存储了一个Transact-SQL 例程,可以返回一定的值.     在SQL Server 2000

oracle的日期时间函数

经常写 sql 的同学应该会接触到一些 oracle 的日期时间函数, 例如: 财务软件或者人力资源软件需要按照每年, 每季度, 每月, 甚至每个星期来进行统计. 今天闲来没事, 特意从网上整理了一些资料, 以备日后查阅. 一.常用日期数据格式 1. 获取年的最后一位, 两位, 三位, 四位 select to_char(sysdate,'Y') from dual;    -- 获取年的最后一位 select to_char(sysdate,'YY') from dual;    -- 获取年

一个用C#写托管的用户自定义函数

简介 随着SQL Server 2005中集成了CLR,我们可以使用现代面向对象语言例如VB.NET,C#来建立数据库对象. 本文将用简单而必须的步骤来说明如何开始使用C#来建立托管的用 户自定义函数. 顼目 我们将为托管的触发 器建立一个Visual Studio 2005数据库项目 建立数据库项目 打开Microsoft Visual Studio 2005建立一个SQL Server项目 File->New->Project- >Database 添加一个数据库引用现在它会需要一个