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

数据库PL/SQL脚本语言函数学习笔记

阅读更多
函数
函数构建的语法规则如下:
create [or replace] function function_name [(parameter, …)]
return datatype  is
variable declaration;
begin
statement;

[execption
statement;
…]
end;

函数的参数只有IN模式,只能够由调用环境传入
返回值可把结果传回到调用环境中
函数的返回类型不能够是PL/SQL数据类型,如table、record等,而只能是oracle建表时所支持的数据类型,例如number、date等
函数中也不能出现DML、DDL等语句


示例(1)
--实现一个拼接字符串的函数,使两个字符串前后拼接成一个字符串,并返回
create or replace function f_str(
       --参数类型(注意参数没有长度)
       l_str1 varchar2,
       l_str2 varchar2

)

        --返回类型
       return varchar2
is
       l_result varchar2(20);

begin
  --方法体
  l_result := l_str1||l_str2;
  return l_result;
end;
--测试
select f_str('aaa','ggg') from dual;
--测试
select f_str(e.ename, e.job) from emp e;

示例(2)

--创建一个合并的函数题二:
表A数据如下:
FID  Field1
1    A
1    B
1    C
2    D
2    E
2    F
要求按如下格式显示:
FID  Field1
1    A,B,C
2    D,E,F 
如何做到?(wmsys.wm_concat)
--创建表AB
create table AB(
       fid number(3),
       field varchar2(3)
      
);
--插入数据用以测试
insert into AB values(1,'A');
insert into AB values(1,'B');
insert into AB values(1,'C');
insert into AB values(2,'D');
insert into AB values(2,'E');
insert into AB values(2,'F');



select * from AB;
--创建函数f_ab()用以连接多个字符,字符用','隔开
--传入此表的fid字段,使具有相同fid字段的记录的field字段连接在一起用‘,’隔开,并返回长字符串
create or replace function f_ab(
       l_fid number
      
)
--返回类型
   return varchar2
   is
--定义返回值
   l_result varchar2(20);
--创建一个游标用以接收具有相同fid字段的记录的field字段.
   cursor c is select field from AB  where fid = l_fid;
  
   begin
--为返回值赋初值
     l_result := '';
--用for循环遍历游标,用l_row接收各个元素
     for l_row in c loop
--连接变量里的field字段
       l_result := l_result||l_row.field||',';
     --结束循环
     end loop;
--返回数据(注意左边的‘,’)
     return rtrim(l_result,',');
--函数结束
   end;
--测试
select fid, f_ab(fid) from AB group by fid;

示例(3)
--题一:表A数据如下:FYear FNum
--                   2006  1
--                   2006  2
  --                  2006  3
--                   2007  4
   --                 2007  5
  --                  2007  6
--按如下格式显示:年度? 2006  2007
--               汇总 6       15

--创建表yearnum
create table yearnum(
        FYear number(10) not null,
        FNum  number(10) not null
);

--向表中插入数据用以测试
insert into yearnum  values(2006, 1);
insert into yearnum  values(2006, 2);
insert into yearnum  values(2006, 3);
insert into yearnum  values(2007, 4);
insert into yearnum  values(2007, 5);
insert into yearnum  values(2007, 6);

--创建一个函数f_count()传入表的fyear字段,使具有相同的fyear字段的记录的fnum字段相加在一起并返回总值
create or replace function f_count(
        l_year  number

)
        return  number
is

   l_sum number(10);
--创建以个游标用以存储相同fyear字段的记录的fnum字段.
   cursor c is select y.fnum  from yearnum y  where y.fyear = l_year;
   c_temp c%rowtype;


begin
       l_sum := 0;
--打开游标
       open c;
--循环开始
       loop
--取出数据
         fetch c into c_temp;
         --到达游标结尾退出循环
         exit when c%notfound;
--fnum字段值相加
         l_sum := l_sum + c_temp.fnum;
--循环结束
       end loop;
       return l_sum;
--关闭游标
       close c;

--函数结束
end;
--测试
select y.fyear 年度,f_count(fyear) 汇总 from yearnum y group by y.fyear;
分享到:
评论

相关推荐

    pl/sql数据库学习笔记

    pl/sql数据库学习笔记,包含一些基础知识,和案例代码

    PL/SQL笔记pl/sql笔记

    pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记pl/sql笔记

    Oracle PL/SQL语言初级教程

    PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...

    PL /SQL高级数据库程序设计语言

    本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。还要介绍一些贯穿全书的更详细的高级概念,并在本章的最后就我们在本书案例中使用的数据库表的若干...

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    一个对数据库的操作工具PL/SQLpl/sqL工具

    一个对数据库的操作工具PL/SQL,能够对ORACLE\SQL进行很好的帮助操作!

    12oracle的PL/SQL编程-函数.包.触发器 PPT

    12oracle的PL/SQL编程-函数.包.触发器 PPT 12oracle的PL/SQL编程-函数.包.触发器 PPT

    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实例精讲student数据库模式数据和表脚本

    oracle pl/sql实例精讲student数据库模式

    PL/SQL 常用函数

    PL/SQL 常用函数,如日期格式转换,数字,常用数学行数,字符串截取,定位,等函数

    pl/sql developer11.0

    pl/sql developer11.0下载 pl/sql developer11.0下载 pl/sql developer11.0下载

    PL/SQL免安装版

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...

    PL/SQL Developer 客户端

    PL/SQL Developer是一个集成开发环境,专门开发面向Oracle数据库的应用。PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加...

    DBAtools for PL/SQL表空间管理器

    PL/SQL Developer是Oracle数据库当前最流行的开发工具之一,它在ORACLE数据库开发设计方面功能强大,使用方便,但是数据库管理方面一直比较欠缺。 DBATools For PL/SQL Developer 是一款PL/SQL Developer的辅助插件...

    PL/SQL Developer9.06

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。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实例精解 student模式 数据库建立代码 包括数据库的建立、索引等。样本数据的插入。

    PL/SQL程序设计

    本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。还要介绍一些贯穿全书的更详细的高级概念,并在本章的最后就我们在本书案例中使用的数据库表的若干...

    oracle 9i pl/sql程序设计笔记

    oracle 9i pl/sql程序设计笔记。

    PL/SQL User's Guide and Reference (官方CHM)

    PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...

Global site tag (gtag.js) - Google Analytics