如何在Oracle中使用函数

1、定义

函数:接受0或多个输入参数,有一个返回值,返回值的数据类型在创建函数时定义。

函数例子1

CREATE OR REPLACE FUNCTION tax(p_empno IN NUMBER)

RETURN NUMBER IS

v_sal NUMBER;

v_returnValue NUMBER;

BEGIN

SELECT sal INTO v_sal

FROM emp1 WHERE empno=p_empno;

v_returnValue := v_sal*0.08;

RETURN v_returnValue;

END tax;

返回员工的所得税

调用函数

DECLARE

v_tax NUMBER;

BEGIN

v_tax := tax(&empno);

DBMS_OUTPUT.PUT_LINE('TAX IS '||v_tax);

END;

函数例子2

创建函数:

CREATE OR REPLACE FUNCTION get_salary(

p_dept_no NUMBER,

p_num OUT NUMBER)

RETURN NUMBER IS

v_sum NUMBER;

BEGIN

SELECT SUM(sal), count(*) INTO v_sum, p_num

FROM emp WHERE deptno=p_dept_no;

RETURN v_sum;

END get_salary;

/

在PL/SQL块中调用:

DECLARE

V_num2 NUMBER;

V_sum NUMBER;

BEGIN

V_sum :=get_salary(&&deptno,V_num2);

DBMS_OUTPUT.PUT_LINE(&deptno||' department sum salary is '||V_sum||'    employee: '||V_num2);

END;

/

2、删除函数

我们可以 DROP FUNCTION 命令对不需要的函数进行删除,语法如下:

DROP FUNCTION [user.]FUNCTION_name;

作者:Oracle小混子

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

时间: 2025-01-24 09:06:15

如何在Oracle中使用函数的相关文章

如何在Oracle中实现时间相加处理?[原创]

oracle|原创 如何在Oracle中实现时间相加处理?   今天由于项目的需要,老大让我负责编写Oracle中的存储过程.嘿,以前从来没有接触过,这次是个很好的学习机会,好好把握!   但是,在使用过程中,遇到一个问题,不知道该如何实现时间相加功能,因为系统中需要用来时间相加功能.通过网络找资料,但是最终一无所获.于是,决定自己写一个!希望可以给朋友有所帮助! -- 名称:Add_Times-- 功能:返回d1与NewTime相加以后的结果,实现时间的相加-- 说明:对于NewTime中的日

如何在ORACLE中實現人民幣大寫的轉換

oracle 如何在ORACLE中實現人民幣大寫的轉換 作者:   CCBZZP        ORACLE在實現報表的功能是很強大的, 特別在現實的應用中會經常用到人民幣大小寫轉換的問題, 在此我寫個函數向大家簡單介紹一下, 希望和大家一起探討, 以便共同進步! 共同發展! 1. 函數DX_MONEY() CREATE FUNCTION  DX_MONEY(  MONEY IN NUMBER)RETURN VARCHAR2 AS V_MONEY VARCHAR2(150);RV_MONEY0

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    :进行匹配的正则表达式 __position   :起始位置,从第几

oracle中dump函数及oracle NUMBER类型内部存储机制

oracle中dump函数 转自:http://blog.vsharing.com/nimrod/A654847.html DUMP函数的输出格式类似: 类型 ,符号/指数位 [数字1,数字2,数字3,......,数字20] 各位的含义如下: 1.类型: Number型,Type=2 (类型代码可以从Oracle的文档上查到) 2.长度:指存储的字节数 3.符号/指数位 在存储上,Oracle对正数和负数分别进行存储转换: 正数:加1存储(为了避免Null)负数:被101减,如果总长度小于21

Oracle中TO_DATE函数使用方法详解

一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用"yyyy-MM-dd HH:mm:ss"的格式作为格式进行转换,但是在Oracle中会引起错误:"ORA 01810 格式代码出现两次".如: select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;  原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQ

oracle中lpad函数的用法详解_oracle

oracle中lpad的用法 pad翻译:填充 lpad函数,在字符串的左侧添加指定字符串,用法: www.jb51.net lpad(String ,截取长度,添加的字符串). 说是添加字符串也不准确,比较准确的说法是对String进行截取字符串, 如果截取长度大于String的长度,则在 String的左侧添加字符串进行填补,如果第三个参数未指定,则用空格进行填补. 例如: select lpad('test',10) from dual; 将返回" test" select lp

Oracle Faq(如何在ORACLE中更改表的列名和顺序 )

oracle 如需转载,请注明出处!用过ORACLE的人都知道,要想在ORACLE中更改表的列名和顺序可是一件很烦琐的事,下面给大家提供一种简单的方法. SQL> select object_id from all_objects where owner='SCOTT' and object_name='T1'; OBJECT_ID----------6067SQL> select obj#,col#,name from sys.col$ where obj#=6067; OBJ# COL#-

如何在Oracle 中实现类似自动增加 ID 的功能?

oracle 我们经常在设计数据库的时候用一个系统自动分配的ID来作为我们的主键,但是在ORACLE 中没有这样的     功能,我们可以通过采取以下的功能实现自动增加ID的功能     1.首先创建 sequence         create sequence seqmax increment by 1     2.使用方法       select seqmax.nextval ID from dual       就得到了一个ID       如果把这个语句放在 触发器中,就可以实现 

如何在oracle中手工创建数据库

oracle中手工创建数据库的步骤: 1. 创建必要的相关目录 2. 创建初始化参数文件 3. 设置环境变量Oracle_sid 4. 创建实例 5. 创建口令文件 6. 启动数据库到nomount(实例)状态 7. 执行建库脚本 8. 执行catalog脚本创建数据字典 9. 执行catproc创建package包 10.      执行pupbld 11.      由初始化参数文件创建spfile文件 12.      执行scott脚本创建scott模式 13.      用命令测试数据