`

Oracle pl/sql

阅读更多

/*create or replace type EMP_REC as
object(ID number(6),
  NAME varchar2(20),
  AGE NUMBER(3),
  PHONE varchar2(11),
  BIRTHDAY date,
  IMAGE varchar2(50),
  comm blob);
  */
 /* create or replace package EMP_FETCHER as
  function GET_EMP(ID in number) return EMP_REC;

  end;
  */
/*  create or replace package body EMP_FETCHER as
  function GET_EMP(ID in number) return EMP_REC is EMP_FOUND STUDENT
  % ROWTYPE;
  EMP_RTN EMP_REC;
  begin
  select *
  into EMP_FOUND
  from STUDENT
  where STUDENT.ID=ID;
  EMP_RTN:=EMP_REC(EMP_FOUND.ID,
      EMP_FOUND.name,
      EMP_FOUND.age);
    return EMP_RTN;
  end;
  end;
   */

 

In SQL*Plus, use an anonymous block to call the function:

 

DECLARE
  EMP_NO NUMBER;
  v_Return HR.EMP_REC;
 BEGIN
  v_Return := EMP_FETCHER.GET_EMP(201);
 END;
 /

2.自定义函数(oracle)
CREATE OR REPLACE
FUNCTION FUN1(sdate in Date,edate in Date) 
 RETURN NUMBER AS
 holidays number;
 st Date;
 en Date;
BEGIN
 select  DATE_START into st from T_ATTE_HOLIDAYS;
 select DATE_END into en from T_ATTE_HOLIDAYS;
 -- dbms_output.put_line(vv);
 if(st=sdate) then
  holidays:=22;
  Elsif(st<sdate) then
    holidays:=33;
  Elsif(st>sdate) then
    holidays:=44;
  end if;
  --holidays:=22;
  RETURN holidays;
END;
3.decode函数
如下:select decode(sign(salary - 8000),>=0,salary*1.15,<0,salary*1.2,salary) from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。
select decode(sysdate-(sysdate-1),'>0',2,1) from dual;  // 条件加单引号,否则报错,decode函数是个选择的关系
select decode(sign(1-3) ,-1,2,0,0,1) from dual;  //sing函数标记大于返回结果1,小于返回-1,等于0

问题3:  我想写一个decode函数,要求如下: 

如果 yrs_of_service < 1 返回 0.04 
如果 yrs_of_service >= 1 and < 5 返回0.04 
如果 yrs_of_service > 5 返回 0.06 

这种情况我该怎么做呢? 
select emp_name,decode(trunc((yrs_of_service+3)/4),0,0.04,1,0.04,0.06) as perc_value from employees; 
问题2:  我想知道是否可以用decode函数来确定数字范围,例如 1-10 = 'category 1', 11-20 = 'category 2', 比一个一个比较应该会好一点吧. 

回答: 不幸的告诉你,不可以用decode函数来确定数字的范围. 可是你可以试着创建一个表达式,这个表达式可以得一个数字指定的范围, 下一个数字对应下一个指定的范围, 以此类推. 

例如: 

select supplier_id,decode(trunc((supplier_id-1)/10),0,'category 1',1,'category 2',2,'category 3','unknown') result from suppliers; 



这个例子基于这个公式:trunc ((supplier_id - 1) / 10 



如果supplier_id在1和10之间,表达式计算值=0. 

如果supplier_id在11和20之间,表达式计算值=1. 


如果supplier_id在21和30之间,表达式计算值=3. 

select decode(trunc((to_number(to_char(attendance_time,'HH24mi'))-200)/800),0,0.5,1,0,0.5) from T_ATTENDANCE_TIME where attendance_id=13666
小于10点加0.5,大于18点加0.5,在它之间的为0
二、sign 

在Oracle/PLSQL中, sign 函数返回一个数字的正负标志. 



语法如下:sign( number ) 



        number 要测试标志的数字. 

If number < 0, then sign returns -1. 
If number = 0, then sign returns 0. 
If number > 0, then sign returns 1. 

三、trunc(number) 

在Oracle/PLSQL中, trunc function returns a number truncated to a certain number of decimal places. 

trunc function 语法如下: 

trunc( number, [ decimal_places ] ) 

number 要截取的数字. 

decimal_places 要保留的小数位. 这个参数必须是个整数. 如果此参数缺省,默认保留0位小数 
select * from T_USER intersect select * from T_USER where USER_ID in (264,265) //交集
select * from T_USER minus select * from T_USER where USER_ID in(264,265) //差集
select * from T_USER where user_id=264 union all select * from T_USER where user_id in (264,265) //并集 union不包括重复行,union all包括重复行



分享到:
评论

相关推荐

    Oracle PL/SQL程序设计(第5版)(上下册)

    ### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 #### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL...

    Oracle PL/SQL实例精解 数据库建立代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和PL/SQL的结构化编程特性,使得数据库开发者能够创建复杂的应用程序和数据库逻辑。在"Oracle PL/SQL实例精解 数据库建立代码"中,我们将深入探讨...

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

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计特性,是Oracle数据库系统中用于创建存储过程、函数、触发器和包的主要工具。在这个"Oracle PL/SQL实战(待续)"的主题中,我们将深入...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    Oracle PL/SQL是一种强大的编程语言,它将关系数据库的强大功能与结构化编程的优点结合在一起,是Oracle数据库系统中不可或缺的一部分。在"Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本"中,读者可以深入...

    ORACLE PL/SQL从入门到精通

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

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    oracle PL/SQL

    Oracle PL/SQL 是Oracle数据库系统中的过程化语言,它结合了SQL查询功能和高级编程特性,使得开发者可以创建复杂的数据库应用程序。在Oracle 11g R2版本中,PL/SQL与SQL Developer一起使用,提供了丰富的开发环境来...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    《Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发》是一本深入探讨Oracle数据库中的PL/SQL编程的专业书籍。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL的查询能力与过程式编程语言的功能,使得数据库...

    Oracle PL/SQL programming(5th Edition)

    ### Oracle PL/SQL Programming知识点概览 #### 一、书籍基本信息 - **书名**:Oracle PL/SQL Programming(第五版) - **作者**:Steven Feuerstein 和 Bill Pribyl - **出版日期**:2009年10月1日 - **出版社**:...

    oracle pl/sql实例精讲student数据库模式数据和表脚本

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据库操作能力和Procedural Language的编程结构,用于在Oracle数据库环境中创建复杂的应用程序。在"Oracle PL/SQL实例精讲student数据库模式"中,我们将深入探讨...

    Oracle PL/SQL学习官方教材

    Oracle PL/SQL是一种强大的编程语言,它将SQL与过程编程语言的特性相结合,为数据库开发提供了丰富的功能。在Oracle数据库环境中,PL/SQL是开发高效、可靠和可维护的数据库应用程序的关键工具。以下是对"Oracle PL/...

    《精通Oracle PL/SQL》源码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作能力和PL(过程化语言)的程序设计特性,是Oracle数据库系统中的核心组件之一。《精通Oracle PL/SQL》这本书深入探讨了这个语言的...

    Oracle PL/SQL by Example(4th Edition)

    《Oracle PL/SQL by Example(4th Edition)》是一本专为Oracle数据库用户设计的PL/SQL编程指南,尤其适合那些希望通过实践学习这一强大的过程式语言的开发者。本书的第四版详细介绍了Oracle PL/SQL的各种核心概念和...

    Oracle PL/SQL best practice

    Oracle PL/SQL最佳实践 Oracle PL/SQL是一种强大的编程语言,用于在Oracle数据库环境中构建复杂的业务逻辑和数据处理任务。Steven Feuerstein,被誉为Oracle PL/SQL语言的大师,分享了他在这一领域的关键最佳实践和...

    Oracle PL/SQL语言初级教程

    Oracle PL/SQL 语言是Oracle数据库系统中的一种高级编程语言,它是SQL的扩展,专为数据库管理和应用程序开发设计。PL/SQL集成了SQL的查询、操纵、定义和控制功能,并添加了过程化编程元素,使其成为数据库管理和开发...

    Oracle PL/SQL编程及最佳实践

    Oracle PL/SQL 编程及最佳实践 Oracle PL/SQL 是一种高级编程语言,用于开发 Oracle 数据库中的存储过程、函数和触发器。PL/SQL language 提供了强大的编程能力,可以实现复杂的业务逻辑,并且与 Oracle 数据库紧密...

    ORACLE PL/SQL 程序设计(第五版)

    《ORACLE PL/SQL 程序设计(第五版)》是Oracle数据库开发领域的一本经典教程,专注于讲解如何使用PL/SQL这一强大的过程化语言进行数据库编程。这本书旨在帮助读者掌握PL/SQL的基本概念、语法和高级特性,以便在实际...

Global site tag (gtag.js) - Google Analytics