`
guoyueqing
  • 浏览: 34697 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

plsql数据类型 record

 
阅读更多
记录类型(Record)

一个记录是一组相关的数据项,每个数据项都有自己的数据类型和名称,可以认为一个record可以储存一个表的一行的一列或者多列,他的fields关联表的列。可以定义record为一个数据库表的rowtype。可以在plsql块,函数,过程或者包内定义record类型,同时可以在定义的时候使用not null约束或者给定一个默认值。

例如:

SQL> set serveroutput on;

SQL>

SQL> declare

2   type tp_record_1 is record(

3     id      number not null := 1,

4     name    varchar2(20),

5     birthday date);

6   v_record_1 tp_record_1;

7 begin

8   v_record_1.id      := 1;

9   v_record_1.name    := 'yellow';

10   v_record_1.birthday := date '1983-06-18';

11   dbms_output.put_line(v_record_1.name);

12 end;

13 /



yellow



PL/SQL procedure successfully completed



也可以使用type类型:

SQL> declare

2   type tp_record_1 is record(

3     empno scott.emp.empno%type,

4     sal  scott.emp.sal%type);

5   v_record_1 tp_record_1;

6 begin

7   select empno, sal into v_record_1 from scott.emp a where a.empno = 7369;

8   dbms_output.put_line(v_record_1.sal);

9 end;

10 /



800



PL/SQL procedure successfully completed



也可以结合index by table构建组合类型:

SQL> declare

2   type tp_record_1 is record(

3     empno scott.emp.empno%type,

4     sal  scott.emp.sal%type);

5   type tp_indexby_table_1 is table of tp_record_1 index by pls_integer;

6   v_indexby_table_1 tp_indexby_table_1;

7 begin

8   select empno, sal bulk collect

9     into v_indexby_table_1

10     from scott.emp a

11    where rownum < 5;

12   for i in v_indexby_table_1.first .. v_indexby_table_1.last loop

13     dbms_output.put_line(v_indexby_table_1(i).sal);

14   end loop;

15 end;

16 /



123

800

1600

1250



PL/SQL procedure successfully completed



和集合类型一样record也有一系列支持的方法来进行对record元素的操作:

SQL> declare

2   type tp_record_1 is record(

3     empno scott.emp.empno%type,

4     sal  scott.emp.sal%type);

5   type tp_indexby_table_1 is table of tp_record_1 index by pls_integer;

6   v_indexby_table_1 tp_indexby_table_1;

7 begin

8   select empno, sal bulk collect

9     into v_indexby_table_1

10     from scott.emp a

11    where rownum < 5;

12    v_indexby_table_1.delete(1);

13    dbms_output.put_line('v_indexby_table_1.count:'||v_indexby_table_1.count);

14    dbms_output.put_line('v_indexby_table_1.first:'||v_indexby_table_1.first);

15   for i in v_indexby_table_1.first .. v_indexby_table_1.last loop

16     dbms_output.put_line(v_indexby_table_1(i).sal);

17   end loop;

18 end;

19 /



v_indexby_table_1.count:3

v_indexby_table_1.first:2

800

1600

1250



PL/SQL procedure successfully completed



Table和record可以用作in或者out参数,下面是一个用作in参数的例子:



create table t_test_recod(id number ,name varchar2(10));

/

insert into t_test_recod select 1,'name1' from dual;

/

create or replace package pac_test is

type type_record is record(

   id  t_test_recod.id%type,

   name t_test_recod.name%type);

type type_table is table of type_record index by binary_integer;



procedure pro_test_record(rec in type_record);

procedure pro_test_record_test;



procedure pro_test_table(tab in type_table);

procedure pro_test_table_test;



end pac_test;

/

create or replace package body pac_test is

procedure pro_test_record(rec in type_record) is

   records type_record;

begin

   select id, name into records from t_test_recod where id = rec.id;

   dbms_output.put_line(records.id || records.name);

end pro_test_record;

procedure pro_test_record_test is

   rec type_record;

begin

   rec.id  := 1;

   rec.name := 'name1';

   pro_test_record(rec);

end pro_test_record_test;



procedure pro_test_table(tab in type_table) is

   v_tab type_table;

begin

   v_tab := tab;

   select id, name into v_tab(1) from t_test_recod where id = v_tab(1).id;

   dbms_output.put_line(v_tab(1).id || v_tab(1).name);

end pro_test_table;



procedure pro_test_table_test is

   v_tab type_table;

begin

   v_tab(1).id := 1;

   v_tab(1).name := 'name1';

   pro_test_table(v_tab);

end pro_test_table_test;


end pac_test;

/
分享到:
评论

相关推荐

    plsql复合数据类型

    ### PL/SQL复合数据类型详解 #### 一、引言 在PL/SQL中,复合数据类型是指由多个数据项组成的复杂数据结构。这类数据结构能够有效地存储和处理多维度的信息,极大地增强了PL/SQL的功能性和灵活性。本文将详细介绍...

    Oracle PLSQL编程精简版

    2. **数据类型**:PLSQL支持多种数据类型,包括数值型(如NUMBER)、字符型(如VARCHAR2和CHAR)、日期型(DATE)、布尔型(BOOLEAN)以及各种复合数据类型,如记录(RECORD)和表(TABLE)类型。 3. **变量声明**...

    PLSQL使用大全,涵盖各种语法常用sql函数

    - PLSQL支持多种数据类型,如数值类型(INTEGER, NUMBER)、字符类型(VARCHAR2, CHAR)、日期类型(DATE)、布尔类型(BOOLEAN)等。理解这些数据类型及其用途是编写PLSQL的基础。 3. **流程控制** - PLSQL提供...

    PLSQL7.1.5.1398

    10. **记录类型(Record Types)**:记录类型允许自定义复杂的数据结构,类似于结构或类,可以包含多个不同数据类型的字段。 以上是对PLSQL7.1.5.1398中核心概念的概述,实际使用中,还需要结合具体的业务需求和...

    Oracle PLSQL 从入门到精通

    PLSQL中的数据类型是学习的重点之一,包括内置的数值类型(如NUMBER、INTEGER)、字符类型(VARCHAR2、CHAR)、日期类型(DATE)以及复合数据类型(如记录类型RECORD和表类型TABLE)。理解这些数据类型对于编写有效...

    最实用的plsql8.0

    9. **记录类型(Record Types)**:用户可以定义自己的记录类型,模拟结构化的数据结构,便于处理复杂的数据操作。 10. **PL/SQL调试**:8.0版本提供了更完善的调试工具,可以帮助开发者定位和修复程序中的错误。 ...

    PLSQL详细手册

    2. **变量与数据类型**:PLSQL支持多种内置数据类型,如 NUMBER、VARCHAR2、DATE等,还有PL/SQL特有的记录类型(Record)和表类型(Table)。 3. **流程控制语句**:包括条件语句(IF-THEN-ELSIF-ELSE)、循环语句...

    Oracle9i Program with PLSQL v1

    2. **变量和数据类型**:PLSQL支持多种数据类型,如 NUMBER、VARCHAR2、DATE、BOOLEAN等,以及复合数据类型如记录(Record)和表(Table)。 3. **流程控制语句**:包括条件判断(IF...ELSIF...ELSE)、循环(WHILE...

    PLSQL使用教程,详细说明了PLSQL的使用方法

    可以使用标量变量来接受 SELECT 语句的结果,该变量的数据类型必须与 SELECT 语句返回的数据类型相同。 ``` v_ename emp.ename%type; v_sal emp.sal%type; select ename,sal into v_ename,v_sal from emp where ...

    PLSQL高级编程-结构化编程

    记录(RECORD)类型则允许我们创建自定义的数据结构,类似于结构体或类。 七、游标变量和 bulk collect 操作 游标变量可以存储查询结果,并在PLSQL代码中动态处理。bulk collect语句用于一次性收集多行数据到集合中...

    PLSQL应用程序开发

    - **丰富的数据类型**:包括数字(`NUMBER`)、字符串(`VARCHAR2`等)、记录(`RECORD`)、表(`TABLE`)及集合类型。 - **块状结构**:PLSQL程序由一个个独立的块组成,这些块包括声明部分、执行部分和异常处理...

    PLSQL 学习笔记

    PLSQL支持多种数据类型,包括数值型(NUMBER)、字符串型(VARCHAR2、CHAR)、日期型(DATE)、布尔型(BOOLEAN)等。此外,还有PL/SQL特有的记录类型(RECORD)和集合类型(VARRAY、TABLE)。 3. PLSQL的变量声明...

    plsql经典版

    4. **数据类型**:除了SQL标准的数据类型,PL/SQL还提供了一些特有的数据类型,如记录(Record)、游标(Cursor)和PL/SQL表。 5. **内置函数和过程**:PL/SQL内建了大量的函数和过程,用于字符串处理、日期时间...

    PLSQL 10.0.3

    8. **记录类型(Record Types)**:PLSQL允许定义记录类型,类似于其他编程语言中的结构体,可以用来存储多个相关数据。 9. **索引表(Index-By Tables)**:这是PLSQL特有的数据结构,类似于关联数组,可以通过...

    plsql精解plsql精解

    1. **变量和数据类型**:PL/SQL支持多种内置数据类型,如NUMBER、VARCHAR2、DATE等,以及复合数据类型如记录(RECORD)和表(TABLE)。理解并熟练运用这些数据类型是编写PL/SQL程序的基础。 2. **控制结构**:PL/...

    PLSQL适合初学者。

    在学习PLSQL的过程中,理解数据类型至关重要。Oracle提供了多种内置数据类型,如NUMBER(数字)、VARCHAR2(可变长度字符串)、DATE(日期时间)等。此外,还可以自定义复合类型,如记录(Record)和表类型(Table)...

    PLSQL语法总结笔记

    这些知识点涵盖了PLSQL编程的基本要素,包括数据类型、变量定义、记录类型、表类型变量以及基本的控制结构。这些内容是理解和使用PLSQL进行Oracle数据库开发的基础。通过掌握这些知识点,开发者可以更加熟练地编写...

    plsql 基础培训PPT

    3. **数据类型**:PL/SQL支持多种数据类型,包括数字型(如NUMBER,其子类型如BINARY_INTEGER、INTEGER等)、字符型(如VARCHAR2、CHAR、LONG、CLOB)、日期型(DATE)、布尔型(BOOLEAN)和二进制类型(如RAW和BLOB...

    PLSQL作业 PLSQL作业 PLSQL作业 PLSQL作业 PLSQL作业 PLSQL作业

    1. **变量与数据类型**:PL/SQL支持多种内置数据类型,如 NUMBER、VARCHAR2、DATE、BOOLEAN等,以及复合数据类型如纪录(RECORD)和表(TABLE)。声明变量时需指定其类型,如`DECLARE my_num NUMBER;`。 2. **流程...

    PLSQL学习经典例子

    PLSQL支持多种数据类型,如NUMBER、VARCHAR2、DATE、BOOLEAN等。变量需先声明后使用,可以通过ASSIGNMENT运算符(:=)赋值。 4. **流程控制** PLSQL提供了IF-THEN-ELSIF-ELSE、CASE、FOR循环、WHILE循环等控制...

Global site tag (gtag.js) - Google Analytics