`

PL/SQL复合类型 Oracle存储过程返回结果集

 
阅读更多
PL/SQL是 Procedure Language & Structured Query Language(过程化SQL语言) 的缩写
PL/SQL是对SQL语言存储过程语言的扩展


记录类型 :记录类型是把逻辑相关的数据作为一个单元存储起来

定义记录类型语法如下:
TYPE record_type IS RECORD(
   Field1 type1  [NOT NULL]  [:= exp1 ],
   Field2 type2  [NOT NULL]  [:= exp2 ],
   . . .   . . .
   Fieldn typen  [NOT NULL]  [:= expn ] ) ;

Example:
DECLARE
   -- 用 %TYPE 类型定义与表相配的字段
   TYPE t_Record IS RECORD(
          T_no emp.empno%TYPE,
          T_name emp.ename%TYPE,
          T_sal emp.sal%TYPE );
   -- 声明接收数据的变量
   v_emp t_Record;

记录类型:
DECLARE
  id           o_user.userid%TYPE := &no;
  userSelected o_user%ROWTYPE;
BEGIN
  SELECT * INTO userSelected FROM o_user WHERE userid = id;
  DBMS_OUTPUT.PUT_LINE('姓名:' || userSelected.username || '邮箱:' ||
                       userSelected.email);
END;

PL/SQL表:
      PL/SQL表或者称为索引表(index-table),是可以在PL/SQL 程序中引用、能够模仿数组的非永久表。用户可以定义一个表类型,然后声明这种类型的变量。接下来,用户就可以将记录添加到用户的PL/SQL 表中,并且采用与引用数组元素大体相同的方法引用他们。
      表包括两个基本成分:数据处理类型为BINARY_INTEGER主键;标量或记录数据类型的列 
DECLARE
  type ouser_table_type is table of o_user%ROWTYPE index by binary_integer;
  my_dname_table ouser_table_type;
  int            number(3);
BEGIN
  int := 1;
  my_dname_table(int).username := 'searching';
  dbms_output.put_line(my_dname_table(int).username);
  int := 2;
  my_dname_table(int).username := 'market';
  dbms_output.put_line(my_dname_table(int).username);
  int := 3;
  my_dname_table(int).username := 'finance';
  dbms_output.put_line(my_dname_table(int).username);
END;

可变数组:
DECLARE
  type strings is varray(5) of varchar2(10);
  v_list strings := strings('scott', 'peter', 'smith', 'tom');
  int    number;
BEGIN
  int := 1;
  dbms_output.put_line(v_list(int));
  v_list(int) := 'urman';
  dbms_output.put_line(v_list(int));
  int := 3;
  dbms_output.put_line(v_list(int));
  v_list(int) := 'jackson';
  dbms_output.put_line(v_list(int));
  v_list.extend;
  v_list(5) := 'oracle';
  dbms_output.put_line(v_list(5));
END;

PL/SQL表和可变数组的区别:
1.VARRAY集合中的元素的数量是有限的,Index_by则是没有限制的。
2.Index_by表的下标可以有间隔, VARRAY集合的下标之间没有间隔。
3.Index_by表不能存储在数据库中,但嵌套表和VARRAY可以被存储在数据库中。
4.Index_by表初始化是自动进行的,VARRAY就必须使用内建的构造函数,构造函数和集合的名字相同。
2
1
分享到:
评论

相关推荐

    Oracle PL/SQL实战(待续)

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

    pl/sql最新中文手册

    5. **游标**:游标是PL/SQL中处理单行结果集的关键工具。手册将说明如何声明、打开、读取和关闭游标,以及如何在循环中使用它们。 6. **复合类型**:PL/SQL支持数组、集合和记录等复合类型,这些使得处理复杂数据...

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

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

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    Oracle PL/SQL是一种...书中可能包含各种类型的PL/SQL程序设计技巧,从简单的存储过程和函数到复杂的事务处理和并发控制策略。通过实例学习,你将能够更好地理解和运用这些概念,提升你在Oracle数据库开发中的技能。

    Oracle PL/SQL编程及最佳实践

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

    Oracle资料学习PL/SQL必备

    7. **存储过程和函数**:存储过程是一组可重用的PL/SQL代码,可以在数据库中保存并按需调用,而函数则返回一个值。它们可以接受参数,提高代码复用性和性能。 8. **触发器**:触发器是在特定数据库事件(如INSERT、...

    oracle_oracle_oraclepl/sql_

    1. **PL/SQL简介**:PL/SQL是Oracle数据库的内置编程语言,用于创建存储过程、函数、触发器和包。它的语法基于SQL,但增加了流程控制、异常处理和数据类型等特性。 2. **变量和数据类型**:PL/SQL支持多种数据类型...

    PL/SQL SQL ORACLE

    "高级PL/SQL"可能指的是对PL/SQL更深入的理解和应用,包括使用游标、复合类型、记录类型、嵌套表、PL/SQL包、索引组织表、并行执行等高级特性。学习高级PL/SQL有助于优化数据库性能,减少网络流量,提高代码的可重用...

    Oracle PL/SQL语言初级教程

    总之,Oracle PL/SQL语言初级教程将引导初学者逐步掌握PL/SQL的基础知识,包括语法、数据类型、函数、表和视图的管理、完整性约束、过程和函数、操作控制以及异常处理。通过学习,开发者可以编写出高效、稳定的...

    pl/sql及常见实用oracle语句学习

    Oracle数据库是世界上最广泛使用的数据库系统之一,而PL/SQL则是Oracle特有的编程语言,用于处理数据库中的数据。在本文中,我们将深入探讨PL/SQL以及Oracle数据库中的一些常见实用语句。 PL/SQL全称为Procedural ...

    PL/SQL存储过程编程

    ### PL/SQL存储过程编程详解 #### 一、Oracle应用编辑方法概览 在Oracle数据库的应用开发中,存在多种编辑方法和技术,它们各有特点和适用场景。以下是对这些方法的概述: 1. **Pro*C/C++**: 这是一种C语言与...

    《精通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 programming(5th Edition)

    - **数据类型**:介绍了PL/SQL支持的各种数据类型,包括基本数据类型和复合数据类型等。 - **控制结构**:如循环、条件语句等。 - **异常处理**:如何处理程序运行时可能出现的各种异常情况。 2. **高级编程技术*...

    pl/sql 学习资料

    PL/SQL是Oracle数据库系统中的一个关键组成部分,它是一种结合了SQL语言与过程式编程的高级语言,主要用于数据库管理和应用程序开发。在这个“PL/SQL学习资料”压缩包中,包含了十一个PDF文件,覆盖了从基础到进阶的...

    PL/SQL学习课件

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库的一种扩展,它将SQL(结构化查询语言)与过程式编程语言相结合,用于处理Oracle数据库中的数据。本套学习课件全面覆盖了PL/SQL的基础...

    PL/SQL学习笔记

    PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行代码。PL/SQL可以处理复杂的数据操作和业务逻辑,支持编程结构如循环、...

    PL/SQL免安装版

    PL/SQL是Oracle数据库系统中的一个关键组件,它是一种结合了SQL语言与过程编程的语言,专为数据库管理和开发设计。PL代表Procedural Language(过程语言),SQL则是Structured Query Language(结构化查询语言)。...

    Oracle8 PL/SQL程序设计

    PL/SQL,全称Procedural Language/Structured Query Language,是Oracle数据库提供的一种过程化编程语言,它结合了SQL的查询功能和传统编程语言的控制结构,使得数据库管理和应用程序开发更为高效和灵活。...

    pl/sql精通

    2. 数据类型:PL/SQL支持多种数据类型,包括数值类型(如NUMBER、INTEGER)、字符类型(VARCHAR2、CHAR)、日期时间类型(DATE)、布尔类型(BOOLEAN)、以及复合和引用类型(如记录、表类型、指针等)。 3. 变量与...

Global site tag (gtag.js) - Google Analytics