广告
返回顶部
首页 > 资讯 > 数据库 >10.PL_SQL——PL_SQL中的复合数据类型之RECORDS
  • 299
分享到

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

2024-04-02 19:04:59 299人浏览 独家记忆
摘要

一、记录和集合概述         目前为止所介绍的变量的数据类型都属于Scalar,即标量,如×××,字符串,日期等等。任何

一、记录和集合概述

         目前为止所介绍的变量的数据类型都属于Scalar,即标量,如×××,字符串,日期等等。任何一种编程语言都需要提供一些手段让用户创建更复杂的变量,PL/sql也不例外,本章就来介绍一下PL/SQL中的复合型变量。

 

PL/SQL的复合型变量主要包括两类:

 

              1. Records:记录

              2. Collection集合。Collection又可以分为三种,

                              a. Associative  Array(INDEXTBY table): 关联数组(或称索引表,和SQL中的INDEX OF TABLE不是一个概念)

                              b. Nested Table: 嵌套表

                              c. Varray: 可变长度列表。

 

二、记录和集合的区别

         Records可以形象的理解为一个容器,用来保存很多其他的数据类型,但每种数据类型只在记录中出现一次,例如一个记录中保存了如下数据类型:

 

PL/SQL Record

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

这个记录中保存了布尔型、日期型、字符型和BLOB型变量,且每个变量都只出现了一次,每个存放其他数据类型的空间称为域(Field


10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

SQL> edit

 

DECLARE

    TYPE myrecord IS RECORD

        (id number(8),

            name varchar2(20)default 'Wilson',

            birthday DATE

        ); 

       

        person myrecord;

BEGIN  

        person.id :=12345;

        person.birthday :=SYSDATE;

       

       DBMS_OUTPUT.PUT_LINE('Name: '|| person.name);

END;   

/

 

SQL> /

Name: Wilson

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

===============================

SQL> edit

 

DECLARE

    person employees%ROWTYPE;

BEGIN

    SELECT * INTO person

    FROM employees WHEREemployee_id = 100;

   

    DBMS_OUTPUT.PUT_LINE('Name: '|| person.first_name);

END;

/

 

SQL> @notes/s37.sql

Name: Steven

 

PL/SQL procedure successfully completed.

===============================================

eg3.

 

SQL> edit

 

DECLARE

    TYPE t_rec IS RECORD

        (v_sal number(8),

         v_minsal number(8)default 1000,

         v_hire_dateemployees.hire_date%TYPE,

         v_reclemployees%ROWTYPE);

    v_myrec t_rec;

BEGIN

    v_myrec.v_sal := v_myrec.v_minsal+ 500;

    v_myrec.v_hire_date :=SYSDATE;

    SELECT * INTO v_myrec.v_recl

    FROM employees WHEREemployee_id = 100;

   DBMS_OUTPUT.PUT_LINE(v_myrec.v_recl.last_name || ' ' ||     TO_CHAR(v_myrec.v_hire_date) || ' '||     TO_CHAR(v_myrec.v_sal));

END;

/

 

SQL> @notes/s38.sql

King 24-AUG-14 1500

 

PL/SQL procedure successfully completed.

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

CREATE TABLE retired_emps (

        EMPNO NUMBER(4),

        ENAME VARCHAR2(25),

        JOB   VARCHAR2(9),

        MGR   NUMBER(4),

        HIREDATE DATE,

        LEAVEDATE DATE,

        SAL   NUMBER(7,2),

        COMM  NUMBER(7,2),

        DEPTNO NUMBER(2)

    );

 

SQL> @notes/s39.sql

 

Table created.

 

SQL> select * from retired_emps where empno = 124;

 

no rows selected

 

SQL> edit

 

DECLARE

    v_employee_number NUMBER :=124;

    v_emp_rec   employees%ROWTYPE;

BEGIN

    SELECT * INTO v_emp_rec FROMemployees

    WHERE employee_id =v_employee_number;

 

    INSERT INTOretired_emps(empno, ename, job, mgr,

                hiredate,leavedate, sal, comm, deptno)

    VALUES( v_emp_rec.employee_id,v_emp_rec.last_name,

            v_emp_rec.job_id,v_emp_rec.manager_id,

            v_emp_rec.hire_date,SYSDATE,

            v_emp_rec.salary,v_emp_rec.commission_pct,

           v_emp_rec.department_id);

    COMMIT;

END;

/

 

SQL> @notes/s40.sql

 

PL/SQL procedure successfully completed.

 

SQL> select * from retired_emps where empno = 124;

 

EMPNO ENAME         JOB              MGR HIREDATE  LEAVEDATE  SAL       COMM    DEPTNO

---------- ----------      --------------- --------- ------------------- ---------      ---------- ---------- ----------

       124 MourGos     ST_MAN     100    16-NOV-07 24-AUG-14 5800                    50



=========================INSERT============================


SQL> edit

 

DECLARE

    v_employee_number NUMBER := 127;

    v_emp_rec retired_emps%ROWTYPE;

 

BEGIN

    SELECT employee_id, last_name, job_id,manager_id,

    hire_date, hire_date, salary,commission_pct,

    department_id INTO v_emp_rec

    FROM employees

    WHERE employee_id = v_employee_number;

 

    INSERT INTO retired_emps

    VALUES v_emp_rec;

                -- 将查询结果打包到v_emp_rec中

END;

/

 

SELECT * FROMretired_emps;

 

SQL>@notes/s41.sql

 

PL/SQL proceduresuccessfully completed.

 

 

     EMPNO ENAME       JOB        MGR   HIREDATE  LEAVEDATE SAL       COMM     DEPTNO

----------------------------------- --------- ---------- --------- --------- -------------------- ----------

       124 Mourgos        ST_MAN 100   16-NOV-07  24-AUG-14  5800        50

       127 Landry           ST_CLERK  120  14-JAN-07  14-JAN-07     3200       50

 

=========================UPDATE============================

 

SQL> edit

 

SET VERIFY OFF

DECLARE

        v_employee_number NUMBER:= 127;

        v_emp_recretired_emps%ROWTYPE;

 

BEGIN

        SELECT *

        INTO v_emp_rec

        FROM retired_emps

        WHERE empno =v_employee_number;

        v_emp_rec.leavedate :=CURRENT_DATE;

 

        UPDATE retired_emps SETROW = v_emp_rec

        WHERE empno = v_employee_number;

END;

/

 

SELECT * FROM retired_emps;

 

 

SQL> @notes/s42.sql

 

PL/SQL procedure successfully completed.

 

 

     EMPNO ENAME     JOB              MGR HIREDATE  LEAVEDATE     SAL       COMM     DEPTNO

     ---------- --------------  ---------- --------- ---------- ------------------    ---------- ---------- ----------

       124 Mourgos      ST_MAN      100 16-NOV-07 24-AUG-14     5800                       50

       127 Landry        ST_CLERK      120 14-JAN-07 24-AUG-14      3200                    50


10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

10.PL_SQL——PL_SQL中的复合数据类型之RECORDS


SQL> edit

 

DECLARE

    myrec employees%ROWTYPE;

BEGIN

    myrec := NULL;

END;

/

 

SQL> @notes/s43.sql

 

PL/SQL procedure successfully completed.


您可能感兴趣的文档:

--结束END--

本文标题: 10.PL_SQL——PL_SQL中的复合数据类型之RECORDS

本文链接: https://www.lsjlt.com/news/42170.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 10.PL_SQL——PL_SQL中的复合数据类型之RECORDS
    一、记录和集合概述         目前为止所介绍的变量的数据类型都属于scalar,即标量,如×××,字符串,日期等等。任何...
    99+
    2022-10-18
  • 6.PL_SQL——注释、数据类型的转换、变量的范围和限定词标签
    一、PL/SQL块的词法        PL/SQL中可以使用字母、数字、空格和特殊符号等,主要包括:   ...
    99+
    2022-10-18
  • Java中的复合数据类型
    目录1、Java字符串2、Java中的包装类3、Java容器ArrayListHashSetHashMap4、工具类StackQueue1、Java字符串 在 Java 中字符串被作...
    99+
    2022-11-12
  • oracle中的复合数据类型
    1)显示定义记录类型;  declare  --显示定义一个record类型myrec     type myrec is RECORD ...
    99+
    2022-10-18
  • Oracle中PL/SQL复合数据类型
    一、PL/SQL记录:一条记录 可简化单行多列的数据的处理。当使用pl/sql记录时,应用开发人员即可以自定义记录类型和记录变量,也可以使用%rowtype属性直接定义记录变量。 1...
    99+
    2022-11-13
  • Java中复合数据类型怎么用
    这篇文章主要为大家展示了“Java中复合数据类型怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中复合数据类型怎么用”这篇文章吧。1、Java字符串在 Java 中字符串被作为 St...
    99+
    2023-06-25
  • javascript的复合数据类型有哪些呢
    本篇文章给大家分享的是有关javascript的复合数据类型有哪些呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。javascript复合数据...
    99+
    2022-10-19
  • PHP中array复合数据类型如何使用
    PHP中array复合数据类型如何使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。(1), array(数组) :PHP 中的数组实际上是把一个优化过的有序图类型当成数组来使...
    99+
    2023-06-17
  • 你需要知道的 Go 数据类型:从基本类型到复合类型
    Go 语言是一门静态类型语言,与其他语言相比,它的类型系统非常简洁和直观。在本文中,我们将介绍 Go 语言中的数据类型,包括基本类型和复合类型,并提供相应的演示代码。 一、基本类型 Go 语言中的基本类型包括 bool、string、int...
    99+
    2023-09-03
    数据类型 npm ide
  • Apache Cassandra 中的集合数据类型
    Apache Cassandra 中的集合数据类型包括:1. 列表(List):有序的元素集合,可以包含重复的元素。2. 集合(Se...
    99+
    2023-10-12
    Apache
  • Python中的数据类型有哪些,如何选择合适的类型?
    Python作为一种高级编程语言,具有丰富的数据类型,这些数据类型的使用直接影响程序的效率和可读性。本文将介绍Python中常见的数据类型以及如何选择合适的类型。 Python中的数据类型包括:数字、字符串、列表、元组、集合和字典。下面我们...
    99+
    2023-08-19
    数据类型 spring windows
  • Python中的复杂数据类型(list、tuple)
    目录一、序列:二、列表(list):[a1,a2],可变数据类型1、列表的创建2、复合列表和多维列表3、列表索引取值4、列表修改三、列表推导式1、列表推导式书写形式:2、列表推导式的...
    99+
    2022-11-11
  • Python内置数据类型中的集合详解
    目录1. 集合 set 简介1.1 使用 { } 直接创建集合1.2 使用 set() 函数创建集合2. 集合没有切片功能!3. 处理集合的常见内置函数3.1  len 函...
    99+
    2022-11-13
  • ASP 中的数据类型如何与大数据结合使用?
    ASP 是一种基于服务器端的脚本语言,通常用于创建动态网站和 Web 应用程序。在 ASP 中,数据类型是非常重要的概念,因为它们决定了数据如何存储、处理和传递。随着大数据时代的到来,越来越多的企业和组织需要将 ASP 中的数据类型与大数...
    99+
    2023-10-24
    数据类型 spring 大数据
  • Python中的collections集合与typing数据类型模块
    目录一、collections集合1、namedtuple:命名tuple对象2、deque:双端队列3、defaultdict:默认字典4、OrderedDict:顺序字典5、Co...
    99+
    2022-11-11
  • Python中的复杂数据类型怎么使用
    这篇文章主要介绍“Python中的复杂数据类型怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python中的复杂数据类型怎么使用”文章能帮助大家解决问题。一、序列:序列是基类类型,序列扩展类...
    99+
    2023-06-30
  • 比较Java和JavaScript中的数据类型:哪种更适合处理大型数据?
    Java和JavaScript都是广泛使用的编程语言,它们的数据类型在处理大型数据时具有不同的优势和劣势。在本文中,我们将比较Java和JavaScript中的数据类型,并讨论哪种更适合处理大型数据。 Java和JavaScript中的数据...
    99+
    2023-08-26
    javascript 数据类型 关键字
  • Python内置数据类型中的集合实例分析
    本文小编为大家详细介绍“Python内置数据类型中的集合实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python内置数据类型中的集合实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. 集合 s...
    99+
    2023-06-29
  • Laravel中的数据类型到底有多少种?如何选择最适合的类型?
    Laravel是一款流行的PHP框架,其内置了许多数据类型,包括字符串、整数、浮点数、数组、对象等。在使用Laravel时,选择合适的数据类型对于代码的性能和安全性有着重要的影响。本文将介绍Laravel中的数据类型以及如何选择最适合的类型...
    99+
    2023-10-02
    laravel load 数据类型
  • 存储之道:MySQL 中的字符串数据类型之 CHAR 与 VARCHAR
    文章目录 参考描述CHAR 与 VARCHAR常见的字符串数据类型权衡 CHAR 中尾随的空白字符固定字符长度PAD_CHAR_TO_FULL_LENGTH开启 PAD_CHAR_T...
    99+
    2023-10-22
    数据库 CHAR VARCHAR 尾随空白字符 MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作