oracle PL\SQL块和复合类型

2018-12-04

PL\SQL程序块由三个部分组成:声明部分、执行部分、异常处理部分。

其结构如下:

  declare

    /*声明部分:说明要用到得变量,类型及游标,以及局部存储过程和函数*/

      /*变量的定义和系统保留字要区分开(sql server 中可用@  PL\SQL不能用@)*/

  begin

    /*执行部分:过程及SQL语句*/

      /*必须有*/

  exception

    /*异常处理部分:错误处理*/

  end;

PL/SQL中除了一些常见的变量类型外,还有复合类型

  复合类型分为记录和表

  记录:由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。

    语法:

       type record_type is record(

        Field1 type1 [not null] [:= exp1],

        Field1 type1 [not null] [:= exp2],

        ...

        Fieldn typen [not null] [:= expn]);

      其中可以用%type和%rowtype 来为声明的变量快速指明类型。

        %type——使其对应的变量类型与已经定义好的某个数据变量的类型相同

        %rowtype——返回一个记录类型,其数据类型和数据库表的数据结构相同

   表:使用记录类型变量只能保存一行数据,这限制了select返回行数,如果SELECT语句返回多行就会错。Oracle提供了另外一种自定义类型,也就是                  表类型,它是对记录类型的扩展,允许处理多行数据,类似于表。

    语法:

      type type_name is table of table%rowtype  [index by binary_integer];

例子1:

  

  结果:

    

  在这个例子中注意:声明部分类似JAVA中的类——先定义一个类,然后定义一个它的对象

           执行部分:select —into—from—where  从表中选择一个合适的记录,然后赋值给into后的记录类型变量

例子2:

  

  结果:

   

  在例子2中,C_course%rowtype——说明表类型变量course_table_type的数据类型和C_course表的数据结构相同

         index by binary_integer——指定系统创建一个主键索引,用于引用表类型变量中的特定行

                    /*有这个后面的my_table(1)和my_table(2)才有意义*/

       创建表类型变量的意义就如上面提到的一样,在于处理多行数据。

  

原文地址:https://www.cnblogs.com/109-379-4468/p/10068229.html

时间: 2024-07-30 23:52:19

oracle PL\SQL块和复合类型的相关文章

Oracle PL/SQL块之过程

1.简介 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分,通过使用输出参数,可以将执行部分的数据传递到应用环境,在sql/plus中通过create procedure来创建过程. 下面通过scott方案(scott方案是oracle数据库自带的一个方案,在实现下面的代码前,请确保该方案可用,也就是scott用户被解锁)来实现一个案例: 1.1.编写一个过程,通过输入用户名和新的年薪,来修改雇员原

Oracle PL/SQL块之函数

以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁 1.简介 函数用于返回特定的数据,当建立函数时,函数头部必须包含return子句,而在函数体内必须包含return语句返回的数据,我们可以使用create function来建立函数. 2.函数小案例 2.1.根据输入雇员的姓名,

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

Oracle PL/SQL随堂笔记总结

1.pl/sql编程 1.理解oracle的pl/sql的概念    2.掌握pl/sql编程技术(过程.函数.触发器)    pl/sql是标准sql语句的扩展    简介        1.过程.函数.触发器都是由pl/sql编写        2.过程.函数.触发器是在oracle中        3.pl/sql是非常强大的过程语言        4.过程.函数等可以在java程序被调用    学习必要性:        1.提高应用程序的性能        2.模块化的设计思想    

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]

【强烈强烈推荐】《ORACLE PL/SQL编程详解》全原创(共八篇)--系列文章导航

原文:[强烈强烈推荐]<ORACLE PL/SQL编程详解>全原创(共八篇)--系列文章导航 <ORACLE PL/SQL编程详解> 系列文章目录导航 ——通过知识共享树立个人品牌. 本是成书的,但后来做其他事了,就无偿的贡献出来,被读者夸其目前为止最“实在.经典”的写ORACLE PL/SQL编程的文章-! 觉得对你有帮助,请留言与猛点推荐,谢谢. [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) 本篇主要内容如下:第一章 PL/S

ORACLE PL/SQL编程总结(一)

----------PL/SQL 程序设计简介----------- 1.1   SQL与PL/SQL 1.1.1   什么是PL/SQL? PL/SQL是 Procedure Language & Structured Query Language 的缩写.PL/SQL是对SQL语言存储过程语言的扩展.从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL.它现在已经成为一种过程处理语言,简称PL/SQL.目前的PL/SQL包括两部分,一部分是数据库引擎部分:另一部分是可嵌入到许多产

ORACLE PL/SQL编程总结(二)

----------异常错误处理--------- 即使是写得最好的PL/SQL程序也会遇到错误或未预料到的事件.一个优秀的程序都应该能够正确处理各种出错情况,并尽可能从错误中恢复.任何ORACLE错误(报告为ORA-xxxxx形式的Oracle错误号).PL/SQL运行错误或用户定义条件(不一写是错误),都可以.当然了,PL/SQL编译错误不能通过PL/SQL异常处理来处理,因为这些错误发生在PL/SQL程序执行之前. ORACLE 提供异常情况(EXCEPTION)和异常处理(EXCEPTI

ORACLE PL/SQL编程之八:把触发器说透

原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8