`
pouyang
  • 浏览: 320017 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库 sql函数

阅读更多

1 sql函数语法


1.1 条件语句 if else

--if-then
if condition then
  sequece_of statements
end if;

--if-then-else
if condition then
  sequece_of statements1
else
  sequece_of statements1
end if;

--if-then-elseif-else
if condition1 then
  sequece_of statements1
elseif condition1 then
  sequece_of statements2
else
  sequece_of statements3
end if;
--例子存储函数
create or replace function testifelse(idd in varchar) return number is
  Result number;
  v_para1 number;
  v_para2 number;
  message varchar2(200);
begin
  select count(1) into v_para1 from dual;
  if v_para1 <> 0 then v_para1 := '111';
  end if;
  if v_para2 is null then message := 'number类型的默认是null,不是0';
  end if;
  dbms_output.put_line('v_para1='||v_para1||'---'||'v_para2='||message);
  return(Result);
end testifelse;


1.2 case 语句

case selector
 when expression1 then sequence_of_statemts1;
end case;
--例子1:
select case 
         when 1 = 1 and 2 = 2 then
          '正确'
       end case
  from dual
--例子2 函数
create or replace function testCase(condition in varchar2) return varchar2 is
  Result varchar2(20);
  v_param dual.dummy%type;
begin
  case condition
    when ''  then Result:='参数是空';
    when '1' then Result:='参数是1';
    when '2' then Result:='参数是2';
    dbms_output.put_line(v_param);
    end case;
  return(Result);
end testCase;
--例子2 存储过程
create or replace procedure testcase(para_in  in varchar2,
                                     para_out out varchar2) is
  v_param varchar2(20);
begin
  dbms_output.put_line('存储过程');
  case para_in
    when '1' then
      para_out := para_in || 'out参数';
    when '2' then
      para_out := para_in || 'out参数2';
  end case;
end testcase;


1.3 for loop 数组以及数组类型

 

declare
  i number;
  type list_type is table of binary_integer index by binary_integer; -- 类型定义
  list list_type;
begin
  for i in reverse 1 .. 5 loop
    list(i) := i * 1;
    dbms_output.put_line(list(i));
  end loop;
  dbms_output.put_line(list.first());
end;
Declare
  type my_text_table_type is table of varchar2(200) index by binary_integer;
  l_text_table my_text_table_type;
  l_index      number;
begin
  for l_index in 1 .. 5 loop
    l_text_table(l_index) := l_index * l_index;
  end loop;
  l_index := l_text_table.first; --使用first方法
  dbms_output.put_line('000'||l_text_table.first);
  loop
    exit when l_index is null;
    dbms_output.put_line(l_index || ':' || l_text_table(l_index));
    l_index := l_text_table.next(l_index);
  end loop;
end;

  下表中列出oracle中集合的方法
方法 描述 使用限制
COUNT 返回集合中元素的个数
DELETE 删除集合中所有元素
DELETE() 删除元素下标为x的元素,如果x为null,则集合保持不变          对VARRAY非法
DELETE(,) 删除元素下标从X到Y的元素,如果X>Y集合保持不变             对VARRAY非法
EXIST() 如果集合元素x已经初始化,则返回TRUE, 否则返回FALSE
EXTEND 在集合末尾添加一个元素                                       对Index_by非法
EXTEND() 在集合末尾添加x个元素                                      对Index_by非法
EXTEND(,) 在集合末尾添加元素n的x个副本                              对Index_by非法
FIRST 返回集合中的第一个元素的下标号,对于VARRAY集合始终返回1。
LAST 返回集合中最后一个元素的下标号, 对于VARRAY返回值始终等于COUNT.
LIMIT 返回VARRY集合的最大的元素个数,对于嵌套表和对于嵌套表和Index_by为null Index_by集合无用
NEXT() 返回在元素x之后及紧挨着它的元素的值,如果该元素是最后一个元素,则返回null.
PRIOR() 返回集合中在元素x之前紧挨着它的元素的值,如果该元素是第一个元素,则返回null。
TRI M 从集合末端开始删除一个元素                                    对于index_by不合法
TRIM() 从集合末端开始删除x个元素                                    对index_by不合法

 

 1.4 实战例子

create or replace function getArrearage2(yuangongID in varchar2)
  return number is
  Result number;
  money1 number;
  money2 number;
  money3 number;
begin
  select count(1)
    into money1
    from (SELECT b.id_worker, SUM(B.ALLOW_MONEY) as totalMoney
            FROM T_MONEY1 B
           WHERE B.STATUS = '1'
             AND B.FLAG = '1'
             AND B.BILL_STAUTUS = '4'
             AND B.ID_WORKER = yuangongID
           group by b.id_worker);
  if (money1 0) then
    select totalMoney
      into money1
      from (SELECT b.id_worker, SUM(B.ALLOW_MONEY) as totalMoney
              FROM T_MONEY1 B
             WHERE B.STATUS = '1'
               AND B.FLAG = '1'
               AND B.BILL_STAUTUS = '4'
               AND B.ID_WORKER = yuangongID
             group by b.id_worker);
  end if;
  select count(1)
    into money2
    from (SELECT b.id_worker, sum(b.back_money) as back_money
            FROM T_MONEY2 B
           WHERE B.STATUS = '1'
             AND B.FLAG = '1'
             AND B.ID_WORKER = yuangongID
           group by b.id_worker) tt;
  if (money2 0) then
    select tt.back_money
      into money2
      from (SELECT b.id_worker, sum(b.back_money) as back_money
              FROM T_MONEY2 B
             WHERE B.STATUS = '1'
               AND B.FLAG = '1'
               AND B.ID_WORKER = yuangongID
             group by b.id_worker) tt;
  end if;
  select count(1)
    into money3
    from (SELECT p.id_worker, sum(c.money) as money
            FROM T_MONEY3 C
            LEFT JOIN MB_PAY_ASK P
              ON P.ID = C.ID_PAYBILL
           WHERE C.MONEY IS NOT NULL
             AND C.MONEY '0'
             AND C.STATUS = '1'
             AND C.FLAG = '1'
             AND P.STATUS = '1'
             AND P.FLAG = '1'
             AND P.ID_WORKER = yuangongID
             AND P.PROPOSAL_STATUS = '4'
           group by p.id_worker) xx;
  if (money3 0) then
    select xx.money
      into money3
      from (SELECT p.id_worker, sum(c.money) as money
              FROM T_MONEY3 P
             WHERE C.MONEY IS NOT NULL
               AND C.MONEY '0'
               AND C.STATUS = '1'
               AND C.FLAG = '1'
             group by p.id_worker) xx;
  end if;
  Result := money1 - money2 - money3;
  return(Result);
end getArrearage2;

 

分享到:
评论

相关推荐

    数据库SQL函数大全

    SQL函数则是SQL中的核心组成部分,它们提供了处理数据的各种方法,包括计算、聚合、转换、比较等。下面将详细介绍一些常见的SQL函数。 一、算术函数 1. SUM(): 计算一组数值的总和。 2. AVG(): 计算平均值。 3. MAX...

    Oracle数据库sql函数及语法

    Oracle数据库的SQL函数是数据库查询和管理中不可或缺的一部分,它们极大地丰富了SQL语言的功能,使得数据处理更加灵活和高效。以下是一些常见的Oracle SQL函数及其详细说明: 1. ASCII函数:ASCII函数返回一个字符...

    数据库开发 Oracle数据库 SQL开发教程 全套PPT课件 共20个章节.rar

    数据库开发 Oracle数据库 SQL开发教程 第04章 单行函数(共61页).pdf 数据库开发 Oracle数据库 SQL开发教程 第05章 多表连接(共48页).pdf 数据库开发 Oracle数据库 SQL开发教程 第06章 分组函数(共41页).pdf ...

    SAP-HANA数据库SQL参考手册.pdf

    整体来看,SAP HANA数据库SQL参考手册为数据库操作人员提供了全面的SQL语言支持。手册详细地解释了SAP HANA所支持的SQL语法和函数,为执行数据管理、查询以及应用程序开发提供了丰富的工具。对于任何使用SAP HANA...

    Oralce数据库SQL和pl_sql实例教程

    总的来说,Oracle数据库SQL和PL/SQL实例教程旨在帮助学习者深入理解这两种语言,提高数据库管理与开发的技能,从而在实际工作中更加高效地处理数据。通过详细的章节和实例,读者可以逐步熟悉并熟练运用SQL和PL/SQL...

    人大金仓数据库SQL手册

    ### 人大金仓数据库SQL手册知识点详述 #### 一、概述 人大金仓数据库SQL手册是一份详尽的文档,旨在帮助用户更好地理解和使用人大金仓数据库管理系统(KingbaseES)中的SQL语言。该手册涵盖了SQL语言的基础知识、...

    中文版SAP-HANA数据库SQL参考手册.docx

    SAP HANA数据库SQL参考手册是为SAP HANA平台上的SQL用户提供的全面指南,尤其适合SAP顾问、系统管理员和硬件合作伙伴等专业人士使用。该手册深入解析了在HANA环境中如何有效地运用SQL语言,涵盖了从基本语法到高级...

    SAP-HANA数据库SQL参考手册.pdf(中文版)

    SAP HANA数据库SQL参考手册详细介绍了这些规则和约定,为数据库管理员和开发人员提供了一个全面的指南,帮助他们在SAP HANA平台上有效地执行SQL操作。该手册不仅涵盖了基础知识,如数据类型、操作符和函数,还包括...

    SAP-HANA数据库SQL中文完全参考手册

    SAP-HANA数据库SQL中文完全参考手册,本文档完全翻译为中文,适合看不懂原版官方英文文档的人,内容做了精美的排版,里面包括各种函数,语法,限制信息等。内容非常完备,掌握这本手册,相信一定能掌握HANA

    mysql数据库转瀚高数据库所需要的函数列表

    1、mysql数据库转国产化瀚高数据库; 2、有些函数在瀚高数据库中不存在,需要添加自定义函数。

    sql函数大全及详解

    SQL 函数是数据库管理系统中的一种重要组件,对于数据库的查询、计算和约束等操作都有着至关重要的作用。下面是关于 SQL 函数的详细知识点。 创建自定义函数 创建自定义函数的 Transact-SQL 语句格式如下所示: ...

    SQL中用到的函数,学习数据库SQL语句的好教程

    SQL中用到的函数,学习数据库SQL语句的好教程

    GBase8s 数据库 SQL过程及函数应用

    GBase 8s 数据库 SQL 过程及函数应用 GBase 8s 数据库 SQL 过程及函数应用是指在 GBase 8s 数据库中使用 SQL 过程和函数来实现特定功能的一种方式。SQL 过程和函数是已经事先编译好的 SQL 语句集合,可以被用户的...

    数据库SQL优化大总结之 百万级数据库优化方案.pdf

    十、数据库SQL优化之避免函数、算术运算或其他表达式运算 10. 尽量避免在where子句中的“=”左边进行函数、算术运算或其他表达式运算,以免引擎放弃使用索引而进行全表扫描。 十一、数据库SQL优化之复合索引 11. ...

    oracle数据库sql基础

    **Oracle数据库SQL基础** 在IT领域,Oracle数据库是全球广泛使用的数据库管理系统之一,而SQL(结构化查询语言)则是与数据库交互的基础工具。本篇将深入讲解Oracle SQL的基础知识,包括基本的SQL语句、单行函数、...

    oracle数据库 sql 和pl/sql实例教程

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,SQL(结构化查询语言)是用于管理和操作数据库的标准语言,而PL/SQL则是Oracle公司为Oracle数据库设计的一种过程式编程语言,它结合了SQL的功能并增加了流程...

    Oracle数据库常用函数.sql

    系统信息函数、类型转化函数、格式化函数、控制流函数、加密函数、日期和时间函数、字符串函数、聚合函数(常用于group by从句的select查询中)、数学函数

    异种数据库函数和标准SQL语法比较Oracle与SqlServer.rar

    本文将深入探讨这两个数据库系统中异种函数和标准SQL语法的差异,帮助用户更好地理解和应用它们。 首先,Oracle数据库以其强大的功能和高度可扩展性著称,而SQL Server则因其易用性和与Microsoft生态系统紧密集成而...

    SQL和Oracle数据库函数说明

    SQL函数是处理数据库数据的基本操作单元,它们允许我们执行计算、转换和数据提取。常见的SQL函数包括: 1. **聚合函数**:如`COUNT()`用于计算行数,`SUM()`用于求和,`AVG()`计算平均值,`MAX()`和`MIN()`找出最大...

Global site tag (gtag.js) - Google Analytics