oracle中的函数开发

ORACLE 函数开发

1、建立函数的语法:

CREATE [OR REPLACE] FUNCTION 函数名

[ (arg1 [mode] datatype[,........])] --当指定参数数据类型时,不能指定其长度。mode值:IN、OUT、IN OUT,当mode 未指定时,表示为IN

RETURN datatype --用于指定函数返回值的数据类型,不能指定其长度

IS|AS

pl/sql block; --当建立函数时,在函数头部必须要带有RETURN子句,在函数体内至少要包含一条RETURN语句。

例1、无参函数

SQL> CREATE OR REPLACE function HX_01 --创建HX_01函数
2 RETURN VARCHAR2
3 IS
4 v_name varchar2(20);
5 begin
6 select ename into v_name from emp where empno=7369;
7 return v_name;
8 end;
9 /

Function created

SQL> select hx_01 from dual; --执行函数

HX_01
--------------------------------------------------------------------------------
SMITH

例2、带有一个IN参数

SQL> CREATE OR REPLACE function HX_02 --创建HX_02函数
2 (v_no in emp.empno%type)
3 RETURN VARCHAR2
4 IS
5 v_name varchar2(20);
6 v_sal emp.sal%type;
7 v_dname dept.dname%type;
8 v_return varchar2(100);
9 begin
10 select a.ename,a.sal,b.dname into v_name,v_sal,v_dname from emp a,dept b where a.deptno=b.deptno and empno=v_no;
11 v_return:=‘姓名:‘||rpad(v_name,8)||LPAD(‘工资:‘,6)||v_sal||lpad(‘部门‘,6)||v_dname;
12 return v_return;
13 end;
14 /

Function created

SQL> begin
2 dbms_output.put_line(hx_02(7566)); --执行函数
3 end;
4
5 /

PL/SQL procedure successfully completed
输出:姓名:JONES 工资:2975 部门RESEARCH

或:

SQL> select hx_02(7566) from dual;

HX_02(7566)
--------------------------------------------------------------------------------
姓名:JONES 工资:2975 部门RESEARCH

例3、带有IN、OUT参数

SQL> CREATE FUNCTION hx_03 --创建HX_03函数
2 (v_n1 emp.empno%type,v_n2 out emp.ename%type,v_n3 out emp.sal%type,v_n4 out dept.dname%type)
3 return emp.job%type
4 as
5 job emp.job%type;
6 begin
7 select a.job,a.ename,a.sal,b.dname into job,v_n2,v_n3,v_n4
8 from emp a,dept b
9 where a.deptno=b.deptno
10 and a.empno=v_n1;
11 return job;
12 end;
13 /

Function created

declare
v1 emp.job%type;
v2 emp.ename%type;
v3 emp.sal%type;
v4 dept.dname%type;
begin
v1:=hx_03(7566,v2,v3,v4); --使用刚才定义的变量接收函数的输出值
dbms_output.put_line(‘姓名:‘||v2||‘ ‘||‘职业:‘||v1||‘ ‘||‘薪水:‘||v3||‘ ‘||‘部门:‘||v4);
end;

输出:姓名:JONES 职业:MANAGER 薪水:2975 部门:RESEARCH

例4、带有in out参数

CREATE OR REPLACE FUNCTION HX_04(v_name in out varchar2) --创建HX_04函数
RETURN VARCHAR2
AS
BEGIN
SELECT DEPT.DNAME INTO V_NAME FROM DEPT,EMP WHERE DEPT.DEPTNO=EMP.DEPTNO AND EMP.ENAME=V_NAME;
RETURN NULL;
END;

DECLARE --执行函数
A VARCHAR2(20);
B VARCHAR2(20);
BEGIN
A:=‘WARD‘;
B:=HX_04(A);
DBMS_OUTPUT.put_line(‘A:=‘||A||‘ B:=‘||B);
END;

输出:A:=SALES B:=

2、删除函数语法

drop function 函数名;

时间: 2024-11-12 03:18:34

oracle中的函数开发的相关文章

Oracle 中 decode 函数用法

Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3) 这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值

Oracle中SYS_CONNECT_BY_PATH函数的妙用

在Oracle中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示. AD: Oracle中SYS_CONNECT_BY_PATH函数是非常重要的函数,下面就为您介绍一个使用SYS_CONNECT_BY_PATH函数的例子,实例如下: create table test (a varchar2(10),b varchar2(10)); INSERT INTO TEST (A, B) VALUES ('1', '我');

oracle中extract()函数----用于截取年、月、日、时、分、秒

oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的部分 语法如下: extract ( { year | month | day | hour | minute | second } | { timezone_hour | timezone_minute } | { timezone_region | timezone_abbr } from { date_value | interval_value } ) 只可以从一个da

Oracle中REGEXP_SUBSTR函数(转)

Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式__positio

oracle中nvl()函数

oracle的nvl函数的使用方法 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认值 select nvl(sum(t.dwxhl),1) from tb_jhde t where zydm=-1 这里关心的nvl的使用方法,nvl(arg,value)代表假设前面的arg的值为null那么返回的值为后面的value 如: NVL(a,b)就是推断a是否是NULL,假设不是返回a的值.假设是返回b的值 通过查询获得某个字段的合计值,假设这个值位null将给出一个预设的默认

Oracle中SYS_CONNECT_BY_PATH函数的使用

在Oracle中,SYS_CONNECT_BY_PATH函数主要作用是可以把一个父节点下的所有子节点通过某个字符进行区分,然后连接在一个列中显示. sys_connect_by_path(字段名, 2个字段之间的连接符号),注意这里的连接符号不要使用逗号,oracle会报错,如果一定要用,可以使用replace替换一下, 方法如下 REPLACE(字段名,原字符,','). 还有,这个函数使用之前必须先建立一个树,否则无用. select  length(mc),mc,length( repla

oracle中的函数

ORACLE中函数          Oracle已经内建了许多函数,不同的函数有不同的作用和用法,有的函数只能作用在一个记录行上,有的能够作用在多个记录行上,不同的函数可能处理不同的数据类型.常见的有两类,单行函数和分组函数 . 单行函数: 单行函数 分类 函数 功能 示例 字符函数 LPAD(<c1>,<i>[,<c2>]) 在字符串c1的左边添加字符串c2直到c1字符串的长度等于i. SELECT  LPAD('Hello!',9,1) leftpad,RPAD(

Oracle 中,函数如何返回结果集

在Oracle中,用函数返回结果集有时候要用到,下面是demo: create or replace type t_test as object ( id integer, create_time date, object_name varchar2(60) ); create or replace type t_test_table as table of t_test; 1.用数组的方式 create or replace function f_test(n in number defaul

关于oracle中table函数的使用

使用oracle的table函数,查询函数返回的结果集,就如同查询普通表一样查询返回的结果集. 说明:  1.表函数可接受查询语句或游标作为输入参数,并可输出多行数据. 2.该函数可以平行执行,并可持续输出数据流,被称作管道式输出. 3.应用表函数可将数据转换分阶段处理,并省去中间结果的存储和缓冲表. 优势:  1.一些复杂的公共信息,但通过建立视图又实现不了,此时可以考虑使用管道输出. 2.涉及运算较多,写个简单SQL实现起来较为麻烦,用table可以实现. 使用步骤:1.创建一个object