`

oracle 自定义函数入门

 
阅读更多
用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样,如max(value)函数,其中,value被称为参数。函数参数有3种类型。
IN 参数类型:表示输入给函数的参数。
OUT 参数类型:表示参数在函数中被赋值,可以传给函数调用程序。
IN OUT参数类型:表示参数既可以传值也可以被赋值。
1、语法格式:
SQL语法方式创建的语法格式为:
CREATE OR REPLACE FUNCTION function_name         /**//*函数名称*/
(
Parameter_name1,mode1 datatype1,           
/**//*参数定义部分*/
Parameter_name2,mode2 datatype2,
Parameter_name3,mode3 datatype3

)
RETURN return_datatype                /**//*定义返回值类型*/
IS/AS
BEGIN
       Function_body                 
/**//*函数体部分*/
      
RETURN scalar_expression                        /**//*返回语句*/
END function_name;
  
说明:
function_name::用户定义的函数名。函数名必须符合标示符的定义规则,对其所有者来说,该名在数据库中是唯一的。
parameter:用户定义的参数。用户可以定义一个或多个参数。
mode:参数类型。
datatype:用户定义参数的数据类型。
return_type::用户返回值的数据类型。
函数返回scalar_expression表达式的值,function_body函数体由pl/sql语句构成。
2、示例
函数代码:
create or replace function T01001_count
return number

is
count_T01001
number;
begin

select count(*) into count_T01001 from T01001;
return
(count_T01001);
end T01001_count;                  --记得一定要打分号


调用:
declare
i
number;
begin

i:
=T01001_count();
dbms_output.put_line(to_char(i));
end;                 --记得一定要打分号
注意:
(1)    如果函数没有参数,那么函数名后不应该要括号;
(2)    创建函数的时候end后面一定要记得写函数名
--没有参数的函数   
create or replace function get_user return varchar2 is  
  v_user varchar2(50);   
begin  
  select username into v_user from user_users;   
  return v_user;   
end get_user;   
  
--测试   
方法一   
select get_user from dual;   
  
方法二   
SQL> var v_name varchar2(50)   
SQL> exec :v_name:=get_user;   
  
PL/SQL 过程已成功完成。   
  
SQL> print v_name   
  
V_NAME   
------------------------------   
TEST   
  
方法三   
SQL> exec dbms_output.put_line('当前数据库用户是:'||get_user);   
当前数据库用户是:TEST   
  
PL/SQL 过程已成功完成。  
--没有参数的函数
create or replace function get_user return varchar2 is
v_user varchar2(50);
begin
select username into v_user from user_users;
return v_user;
end get_user;
--测试
方法一
select get_user from dual;
方法二
SQL> var v_name varchar2(50)
SQL> exec :v_name:=get_user;
PL/SQL 过程已成功完成。
SQL> print v_name
V_NAME
------------------------------
TEST
方法三
SQL> exec dbms_output.put_line('当前数据库用户是:'||get_user);
当前数据库用户是:TEST
PL/SQL 过程已成功完成。
Sql代码
--带有IN参数的函数   
create or replace function get_empname(v_id in number) return varchar2 as  
  v_name varchar2(50);   
begin  
  select name into v_name from employee where id = v_id;   
   return v_name;   
exception   
  when no_data_found then  
    raise_application_error(-20001, '你输入的ID无效!');   
end get_empname;  
--带有IN参数的函数
create or replace function get_empname(v_id in number) return varchar2 as
v_name varchar2(50);
begin
select name into v_name from employee where id = v_id;
return v_name;
exception
when no_data_found then
raise_application_error(-20001, '你输入的ID无效!');
end get_empname;
 
附:
函数调用限制
1、SQL语句中只能调用存储函数(服务器端),而不能调用客户端的函数
2、SQL只能调用带有输入参数,不能带有输出,输入输出函数
3、SQL不能使用PL/SQL的特有数据类型(boolean,table,record等)
4、SQL语句中调用的函数不能包含INSERT,UPDATE和DELETE语句
 
查看函数院源代码
oracle会将函数名及其源代码信息存放到数据字典中user_source
select text from user_source where name='GET_EMPNAME';

删除函数
drop function get_empname
分享到:
评论
1 楼 zhengyong7232 2012-10-29  
create or replace function area(f float)
return float
is
begin
return 3.14*(f*f);
end area;

相关推荐

    PL_SQL 教程及帮助,ORACLE常用函数

    Oracle函数分为内置函数和自定义函数,内置函数如TO_DATE、TO_CHAR、SUBSTR、UPPER、LOWER等用于数据转换和字符串操作;数学函数如ABS、SQRT、MOD等用于数值计算;日期函数如SYSDATE、ADD_MONTHS、EXTRACT等用于处理...

    Oracle学习记录之使用自定义函数和触发器实现主键动态生成

    很早就想自己写写Oracle的函数和触发器,最近一个来自课本的小案例给了我这个机会。现在把我做的东西记录下来,作为一个备忘或者入门的朋友们的参考。  案例介绍:  招投标管理系统(数据库设计)。  数据表有...

    Oracle plsql从入门到精通_源代码

    - **自定义函数**:创建可重用的代码片段,返回特定值。 - **存储过程**:一组完成特定任务的PL/SQL语句,可以无返回值或有返回值。 4. **异常处理**: - **预定义异常**:如NO_DATA_FOUND、TOO_MANY_ROWS等。 ...

    oracle从入门到精通学习材料+常用函数

    本套学习材料以“Oracle从入门到精通”为主题,通过精心编排的PPT形式,旨在帮助初学者逐步掌握Oracle的核心概念和技术。下面将详细介绍其中可能涉及的重要知识点。 1. **Oracle基础**: - 数据库概念:了解数据库...

    ORACLE EBS 入门与提高 请求组 数据组 自定义并发程序

    ### Oracle EBS 入门与提高 —— 请求组、数据组、自定义并发程序 #### 在请求组中管理程序 **定义一个请求组** 当定义一个请求组时,可以包括以下内容: - 属于一个应用的所有报表和并发程序 - 独立的报表和...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    oracle pl/sql从入门到精通 配套源代码

    这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了帮助读者通过实践来深入理解和掌握Oracle数据库的编程技术。 首先,让我们探讨Oracle PL/SQL的基础知识。PL/SQL是Oracle数据库的内置编程语言,由块构成...

    oracle分析函数

    分析函数的简述涵盖了基本概念和用法,是初学者入门的良好起点。随着经验的积累,开发者会逐渐发现分析函数在解决实际问题时的强大能力。 通过深入理解和实践,Oracle分析函数可以成为数据分析师和开发者的强大...

    Oracle 11g 从入门到精通

    本教程“Oracle 11g 从入门到精通”旨在帮助初学者掌握Oracle 11g的核心概念和技术,逐步提升为熟练的数据库管理员(DBA)或开发者。 1. **Oracle基础知识**: - 数据库概念:了解数据库是什么,以及它们如何存储...

    Oracle基础快速入门

    3. 存储过程与函数:创建自定义的业务逻辑,提高效率和代码复用。 4. 触发器:自动执行的程序,基于对数据库表的操作(如INSERT、UPDATE、DELETE)。 六、数据库安全管理 1. 用户管理:CREATE USER命令创建用户,...

    《Oracle从入门到精通》书中代码

    3. **PL/SQL编程**:Oracle特有的PL/SQL语言结合了SQL和过程式编程,用于编写存储过程、函数、触发器等。书中代码将展示如何编写和执行PL/SQL块,理解变量、条件语句、循环结构以及异常处理。 4. **表和索引**:...

    Oracle9I入门基础

    总的来说,Oracle9i入门基础涵盖了数据库安装、管理、安全、编程和性能优化等多个方面。通过深入学习这些知识点,初学者可以逐步建立起对Oracle数据库系统全面的理解,并为将来进一步的数据库管理和开发工作打下坚实...

    Oracle9i PLSQL 入门到精通读书笔记

    本书“Oracle9i PLSQL 入门到精通”旨在帮助读者从基础开始,逐步掌握这一强大的工具。 1. **PLSQL基本概念** - PLSQL由三部分组成:声明部分、执行部分和异常处理部分。 - 声明部分用于定义变量、常量、游标、...

    oracle入门教程大全

    4. 函数与过程:自定义函数用于返回值,过程用于执行一系列操作,二者都可通过CREATE PROCEDURE或FUNCTION创建。 5. 游标:用于逐行处理查询结果,常用于循环操作数据。 6. 异常处理:通过EXCEPTION关键字捕获并处理...

    关于oracle 函数的网上资料

    9. **PL/SQL过程和函数**:PL/SQL是Oracle特有的编程语言,可以创建自定义的过程和函数,实现更复杂的业务逻辑。 10. **游标和循环**:在PL/SQL中,游标用于遍历查询结果,配合`FETCH`和`LOOP`语句进行迭代处理。 ...

    oracle从入门到精通

    PL/SQL是Oracle特有的过程化语言,它扩展了SQL的功能,允许编写存储过程、函数、触发器等。学习PL/SQL能够帮助你更好地管理和控制数据库,提高代码复用性,优化性能。通过学习PL/SQL,你可以创建自定义的业务逻辑,...

    《Oracle 10g入门与提高》第6章:PL、SQL程序设计 .pptx

    《Oracle 10g入门与提高》第6章主要涵盖了PL/SQL程序设计的基础和核心概念,这包括了变量声明、数据类型、表达式、程序块结构、控制结构、游标、过程与函数、触发器以及异常处理。下面将详细阐述这些知识点。 6.1 ...

    Oracle9i+PLSQL从入门到精通

    全书首先介绍了PL/SQL的基本概念与基础知识,这包括了PL/SQL简介、PL/SQL基础语法、控制结构、SQL基本命令、Oracle数据库内置函数以及自定义的过程和函数、包和异常处理等。这部分内容为没有数据库编程经验的读者...

    oracle10g教程从入门到精通

    此外,用户还可以自定义函数以满足特定需求。熟悉和掌握这些函数可以极大地增强你在SQL查询中的灵活性和效率。 在Oracle 10g教程中,你将学习如何创建和管理数据库对象,如表、视图、序列、存储过程和触发器。你还...

Global site tag (gtag.js) - Google Analytics