`
wlxt_8436
  • 浏览: 16907 次
  • 性别: 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的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...

    PL/SQL存储过程笔记

    PL/SQL(Procedure Language for SQL)是Oracle数据库的一种专用编程语言,它结合了SQL命令与过程化脚本,从而允许混合数据库查询与程序逻辑控制结构。存储过程是一种在数据库上创建并保存的过程,它由一系列SQL语句...

    PLSQL-8.rar

    “新建 Text Document.txt”可能是用户在下载或解压过程中创建的一个文本文件,可能包含了笔记、命令行脚本、SQL查询或者PL/SQL代码片段。在PL/SQL开发中,这样的文本文件常用于记录查询结果、记录开发过程或存储待...

    plsql中文

    4. CONNECT-TABLE.sql、creat-dept.sql、insert-RESULTS.sql、insert-course.sql:这些是SQL脚本文件,用于创建表、插入数据或者执行其他数据库操作。它们展示了如何在实际环境中运用PL/SQL,例如CREATE TABLE语句...

    学习oracle笔记-PLSQL

    Sqlplus是一款命令行工具,用于连接Oracle数据库并执行SQL语句或PL/SQL脚本。它适用于快速测试和调试存储过程等功能。 #### PL/SQL Developer PL/SQL Developer是一款集成开发环境,专为PL/SQL开发而设计,提供了...

    oracle PL-SQL 学习笔记1

    从给定的Oracle PL-SQL学习笔记中,我们可以提炼出一系列关键的知识点,涉及PL-SQL的基本语法、变量声明与赋值、数据类型、表操作、记录与集合处理等核心概念。下面将对这些知识点进行详细阐述: ### 1. 变量声明与...

    PLSQL学习笔记

    PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库提供的一种结合了SQL语言和过程编程的语言,它扩展了SQL的功能,使得开发人员可以在数据库中编写复杂的程序逻辑。本笔记主要涵盖了以下几个...

    清华滕永昌SQL笔记

    1. PL/SQL:PL/SQL是Oracle特有的过程化语言,用于编写存储过程、函数、触发器等,增强了数据库的编程能力。 2. Sqlplus命令:例如,ALTER用于修改表结构,AUDIT和NOAUDIT用于开启或关闭审计,COMMIT和ROLLBACK用于...

    oracle经典笔记

    这份笔记涵盖了从Oracle PL/SQL编程到SQL查询语言的广泛主题,旨在帮助读者深入理解Oracle数据库的运作机制和应用技巧。 首先,我们来看看《Oracle PL-SQL入门教程(经典).doc》。这份文档详细介绍了PL/SQL,Oracle...

    orcale笔记

    ### Oracle 笔记知识点梳理 #### 一、用户管理与解锁 - **解锁用户**:通过`ALTER USER scott ACCOUNT...以上内容覆盖了Oracle数据库的基础到高级的各种知识点和技术细节,对于学习和掌握Oracle数据库是非常有帮助的。

    plsql处理层级数据学习笔记

    5. **SQL脚本**:`insert_dept_temp.sql`可能是用于向临时表中插入数据的SQL脚本,这通常发生在批量导入或处理操作中。在PL/SQL中,我们可以使用`EXECUTE IMMEDIATE`语句执行动态SQL。 6. **源码和工具**:标签中的...

    oracle学习笔记

    总结来说,"Oracle学习笔记"涵盖了Oracle数据库的核心概念和技术,包括优化查询性能的索引、过程编程的PL/SQL、数据安全与恢复的RMAN,以及高效管理大数据的分区技术和集合函数。这些都是Oracle数据库管理员和开发...

    韩顺平玩转oracle学习笔记

    ### 韩顺平玩转Oracle学习笔记知识点详解 #### 一、Oracle基本使用——基本命令 ...以上是对《韩顺平玩转oracle学习笔记》中的关键知识点进行了详细的解释和总结,希望对学习Oracle数据库管理和开发有所帮助。

    学习笔记_使用plsql导出数据.doc

    在PL/SQL Developer这款强大的Oracle数据库管理工具中,导出数据是常见的操作,适用于备份、迁移或分享数据。本文将详细讲解如何使用PL/SQL Developer进行数据导出,并对比不同导出方式的特点。 首先,如果你想导出...

    学习笔记 testOracle

    【标签】"源码"和"工具"暗示这份笔记可能包含了关于Oracle数据库的编程实践,比如PL/SQL(Oracle的数据库编程语言)的源代码示例,或者是使用Oracle开发工具如SQL Developer进行数据库管理和开发的技巧。源码可能...

    oracle_xuexibiji.rar_oracle

    "oracle_xuexibiji.rar_oracle"压缩包文件中的学习笔记记录了Oracle数据库的一些关键知识点,包括数据导入导出、SQL*Plus的使用以及各种特殊函数的应用。以下是对这些内容的详细解释: 1. 数据导入导出: 在Oracle...

    Oracle10g_学习笔记.zip

    PL/SQL是Oracle的内置过程式语言,用于编写存储过程、函数、触发器等。它结合了SQL的查询功能和传统编程语言的控制结构,是Oracle数据库应用开发的重要工具。 六、性能优化 1. Explain Plan:通过执行计划分析SQL...

Global site tag (gtag.js) - Google Analytics