oracle中的函数使用

一函数的基本应用

 

1 创建函数(SQL窗口中)

create or replace function get_hello_msg
return varchar2 as
begin
       return 'hello world';
end get_hello_msg;

函数必须有返回值,该函数的返回值是varchar2类型。

 

2 在数据字典查看函数信息(SQL窗口)

select object_name,object_type,status from user_objects where lower(object_name) = 'get_hello_msg'

注意看status这一栏,若显示VALID说明该函数可用;若显示INVALID则说明该函数不合法。

不可用的原因可能是语法错误,比如在创建函数时少了分号,记住每一个end后面都要有分号。

 

3 查看函数返回值(Command窗口)

set serverout on;
declare msg varchar2(20);
begin
 msg:=get_hello_msg;
 dbms_output.put_line(msg);
end;
/

其中set serverout on语句表示在窗口中显示服务器输出信息。

 

二带参数的函数

1 创建函数(SQL窗口)

create or replace function get_stu_grade(stu_grade number) return number as
begin
       declare standard_grade number;
       begin
               standard_grade:=stu_grade - 60;
               if standard_grade < 0 then
                  return 0;
               end if;
               return 1;
       end;
end get_stu_grade;

2 调用函数(Command窗口或SQL窗口)

select get_stu_grade(90) from dual; // 1
select get_stu_grade(60) from dual; // 1
select get_stu_grade(59) from dual; // 0

 

 

三函数的确定性

create or replace function get_stu_grade(stu_grade number) return number
deterministic as
begin
       declare standard_grade number;
       begin
               standard_grade:=stu_grade - 60;
               if standard_grade <=0 then
                  return 0;
               end if;
               return 1;
       end;
end get_stu_grade;

 

deterministic增加了函数的确定性。意思就是我们输入相同的一个分数,其返回的结果应该一致。如果第一次输入了一个90分,第二次再输入90分的时候返回值肯定与第一次一样,那么oracle就会直接拿到第一次的结果,不再重复执行该函数,提高的效率。什么时候不能用该关键字呢?比如该函数使用了系统时间而系统时间影响了返回值。那么每一次执行系统时间理论上是不一样的,所以不能直接拿上次的结果。

时间: 2024-07-30 12:53:35

oracle中的函数使用的相关文章

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中使用函数

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_

Oracle中自定义函数 无参数 输入参数 输出参数

-- 19-1:建立无参数的函数 CREATE OR REPLACE FUNCTION cur_datetime RETURN VARCHAR2 IS BEGIN RETURN TO_CHAR(sysdate, 'YYYY"年"MM"月"DD"日"HH24″时"MI"分"SS"秒"'); END; / -- 19-2:建立带有输入参数的函数 CREATE OR REPLACE FUNCTION g

oracle中decode函数的用法

oracle函数库中提供了很多有用的函数,比如nvl,sign,round等,其中用得比较多的,功能比较大的还是decode这个函数.这个函数的用法如下: decode(表达式,条件1,结果1,条件2,结果2,...)中间有几个条件与结果根据个人而定,如 decode(sign(100-20),1,20,-1,100)意思是说当(100-20)大于零时,结果为20,而当(100-20)小于零时,结果为100,其中的sign只是一个判断符号的函数 假如要对一个企业的员工进行工资调整,对于3000块

oracle中decode函数与abs、sign、trunc、substr函数的混合使用

decode()函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能.(但其不是标准SQL函数,不过这也正是他的优点,其他数据库中提供不了如此强大的函数.) 功能: 1. 流程控制,相当于IF-THEN-ELSE功能.  用法如下:decode( expression , search , result [, search , result]... [, default] ) expression 要比较的表

oracle中substr函数的用法

oracle|函数 In oracle/PLSQL, the substr functions allows you to extract a substring from a string. The syntax for the substr function is: substr( string, start_position, [ length ] ) 说明:string is the source string.start_position is the position for ext