oracle 自定义函数

函数

  函数与存储过程相似,也是数据库中存储的已命名PL-SQL程序块。函数的主要特征是它必须有一个返回值。通过return来指定函数的返回类型。在函数的任何地方可以通过return expression语句从函数返回,返回类型必须和声明的返回类型一致。

语法:

  create [or replace] function function_name

  [(parameter_list)]

  return datatype

  {is/as}

  [local_declarations]

  begin

    executable_statements;

  [exception

    exception_handlers;]

  end;

说明:

  function_name:函数名称。

  parameter_list:函数列表,可选。

  return 自居:指定函数的返回类型,不能指定大小。

  local_declarations:局部变量声明,可选。

  executable_statements:要执行的PL-SQL语句。

  exception_handlers:异常处理,可选。

  or repalce:是否覆盖,可选。

例:根据员工编号获得员工薪水。

--根据no查询sal
CREATE OR REPLACE FUNCTION fun_getSal(eno NUMBER)
RETURN NUMBER   --返回类型
AS
v_sal emp.sal%TYPE;
BEGIN
  SELECT sal INTO v_sal FROM emp WHERE empno = eno;
  RETURN v_sal;
  EXCEPTION
    WHEN OTHERS THEN
      raise_application_error(-20012,‘该雇员不存在‘);
END fun_getSal;

调用函数:

--调用函数,自定义异常处理
DECLARE
  v_sal NUMBER;
  emp_20012 EXCEPTION;
  PRAGMA EXCEPTION_INIT(emp_20012,-20012);
BEGIN
  v_sal:=fun_getsal(7788);
  dbms_output.put_line(‘sal:‘||v_sal);
  EXCEPTION
    WHEN emp_20012 THEN
      dbms_output.put_line(‘该雇员不存在‘);
END;

注意:

  1、函数参数和返回类型只声明参数,不指定大小。

  2、可执行部分至少有一条return语句。

  3、调用函数时,不能将函数作为单独的语句存在,可以作为表达式的一部分。

适用场合:

  1、如果需要返回多个值和不返回值,就使用存储过程;如果只需要返回一个值,就使用函数。

  2、存储过程一般用于执行一个指定的动作,函数一般用于计算和返回一个值。

  3、可以再SQL内部调用函数来完成复杂的计算问题,但不能调用存储过程。

时间: 2024-11-02 23:24:10

oracle 自定义函数的相关文章

Oracle自定义函数1

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

Oracle自定义函数

核心提示:函数用于返回特定数据.执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1] datatype1, argu2 [mode2] datatype2, ........ ) return datatype is begin end; 执行 var v1 varchar2(100) exec :v1:=function_na 函数用于返回特定数据.执行时得找一个变量接收函数的返回值;

Oracle 自定义函数Function

示例代码: [sql] view plain copy CREATE OR REPLACE  FUNCTION "MY_DATABASE"."F_GET_USER_COUNT_BY_DEPART" ( DEPART_ID_VAL in long ) return varchar2 is USER_STATE varchar(16); USER_COUNT number; begin select count(*) into USER_COUNT from TB_US

Oracle自定义函数记录

函数主要是用来操作各种数据,并返回相应的操作结果.用户自定义函数是存储在数据库中的代码块,可以把值返回到调用程序.函数的语法:Create [or replace] function function_name [in datatype,out datatype, in out datatype]Return datatypeIs|as--..函数:1.函数可在sql中的以下部分被调用:select.where.having.connect by.start with.order by.grou

oracle自定义函数:将字符串中的特殊字符转化为逗号

create or replace function F_SPLIT_CONDITION(START_STRING VARCHAR2, V_FLAG VARCHAR2)/***将给出的START_STRINGN字符串按V_FLAG替换为逗号分隔的字符串*例如:12-34-56 替换为'12','34','56'*使用loop循环实现*/RETURN VARCHAR2 IS L_STRING VARCHAR2(100);--输出字符串 L_INDX INTEGER; --特殊字符 V_STRING

Oracle自定义聚集函数

今天工作中看见别人写的自定义聚集函数,所以一门心思的想搞懂,就在网上找资料了. 自定义聚集函数 自定义聚集函数接口简介 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG(), 但是这些预定义的聚集函数基本上都是适应于标量数据(scalar data), 对于复杂的数据类型,比如说用户自定义的Object type, Clob等, 是不支持的. 但是,幸运的是, 用户可以通过实现Oracle的Extensibility Framework中的ODCIAggregat

Jpa 重写方言dialect 使用oracle / mysql 数据库自定义函数

在使用criteria api进行查询时 criteriaBuilder只提供了一个部分标准的sql函数,但当我们需要使用oracle特有的行转列函数wm_concat或 mysql特有的行转列函数group_concat时,就只能自己封装了, criteriaBuilder提供了一个封装函数的方法: /** * Create an expression for the execution of a database * function. * @param name function name

Oracle自定义行转列函数

--行转列自定义函数,只针对TABLE1表 --paramType是参数类型,用于判断,param1和param2是条件参数 create or replace function My_concat(paramType in integer,param1 in varchar2,param2 in varchar2) return varchar2 is resultStr varchar2(2000); begin if paramType = 1 then --定义游标 for temp_c

ORACLE创建自定义函数返回varchar类型

需求描述:两张表,如下,需要查询tmp1表中id_new在tmp2中的nameselect from tmp1; select from tmp2;方法一:好处:简单,直接sql展示劣处:如果主表数据量太大,十几亿的话,性能会大大下降,此时建议第二种方法select a.id_old,to_char(wm_concat(distinct a.id_new)) id_new,to_char(wm_concat(distinct b.name)) namefrom tmp2 b,(select a.