`

12.定义并使用变量-复合类型

阅读更多

复合类型(composite)---类似于java中的数据

---介绍

用于存放多个值的变量。主要包括这几种:
1)pl/sql记录
2)pl/sql表
3)嵌套表
4)varray

1.复合类型---pl/sql记录
类似于高级语言中的结构体,需要注意的是,当引用pl/sql记录成员时,必

须要加记录变量作为前缀(记录变量.记录成员)如下;

SQL>   declare
  2    --定义一个pl/sql记录类型 emp_record_type
  3    type emp_record_type is record(
  4    name emp.ename%type,
  5    salary emp.sal%type,
  6    title emp.job%type);
  7    --定义一个 sun_record变量,这个变量的类型是emp_record_type
  8    sun_record emp_record_type;
  9    begin
 10      select ename,sal,job into sun_record from emp where

empno=&no;
 11      --输出
 12      dbms_output.put_line('员工名:'||sun_record.name||' 工资:'||sun_record.salary||' 岗位:'||sun_record.title);
 13      end;
 14  /
员工名:MARTIN 工资:1250 岗位:SALESMAN
PL/SQL procedure successfully completed

如实例:sun_record是记录变量,name就是sun_record的记录成员

 

复合类型---pl/sql表
相当于高级语言中的数组,但是需要注意的是再高级语言中数组的下标不能为负数,而pl/sql是可以为负数,并且表元素的下标没有限制。实例如下:

SQL>  --pl/sql表实例
SQL>     declare
  2      --定义一个pl/sql表类型 sun_table_type,该类型是用于存放emp.ename%type类型数据的数组
  3      --index by binary-integer表示下标是整数
  4      type sun_table_type is table of emp.ename%type index by binary_integer;
  5      --定义一个sun_table变量,这个变量的类型是sun_table_type
  6      sun_table sun_table_type;
  7      begin
  8        select ename into sun_table(0) from emp where empno=&no;
  9        dbms_output.put_line('员工名:'||sun_table(0));
 10        end;
 11  /
员工名:MARTIN
PL/SQL procedure successfully completed

说明:
sun_table_type 是pl/sql表的类型
emp.ename%type 指定了表的元素的类型和长度
sun_table 为pl/sql表变量
sun_table(0)则表示下标为0的元素


如果把where条件去掉会怎么样?
这样就是将emp表的所有的雇员的名字都放到sun_table(0)里,程序会报错


如何解决返回多行结果的问题?
使用参照变量即可解决

下面这两种变量不怎么使用
复合变量---嵌套表(nested table)
复合变量---变长变量(varray)


分享到:
评论

相关推荐

    定义并使用变量,复合类型

    定义变量时,可以使用`not null`关键字确保变量值不为空,并通过`:=`或`default`关键字设置初始值。 在PL/SQL中,赋值操作使用`:=`,与许多其他编程语言中的`=`不同。例如,我们可以声明一个变量`v_tax_rate`来存储...

    VB类型字符精简声明变量

    在VB(Visual Basic)编程语言中,类型字符是一种声明变量时指定数据类型的方式,它可以精简代码并提高可读性。类型字符是一个单字符符号,它紧跟在变量、常量或函数名之后,用于明确其数据类型。这些字符不是变量名...

    二级c试题题库复习.pdf

    - 结构体、联合体、枚举等复合数据类型的定义和使用。 - 指向复合类型的指针操作。 14. 内存管理: - 动态分配内存,使用`malloc`、`calloc`、`realloc`和`free`函数。 15. 错误处理: - 检查函数调用是否成功...

    机器人现场编程-变量的定义.pptx

    本资料主要讲解了三种类型的变量:位姿变量、实型变量和字符串变量,重点集中在位姿变量的定义和使用上。 位姿变量是描述机器人在空间中的位置和姿态的变量,它包括关节坐标和笛卡尔坐标两种表示方式。这种变量只有...

    宋劲杉--Linux C编程一站式学习2009.3.13版本——-免积分!!!

    - **变量**:Makefile中的变量定义和使用。 - **自动处理头文件的依赖关系**:Makefile如何自动检测依赖关系。 - **常用的make命令行选项**:make命令的常用选项。 **23. 指针** - **指针的基本操作**:指针的声明...

    2023-03-31 项目笔记-第一阶段-4.变量、常量 4.1 定义变量的方法

    4. **复合数据类型变量**:除了基本类型,C语言还有结构体(struct)、共用体(union)等复合数据类型,用于组合不同类型的数据。定义这类变量需要指定其结构或共用体类型。 5. **静态变量与自动变量**:静态变量在程序...

    CCS_C语言出错信息速查

    49. Improper use of a typedef symbol - 类型定义符号使用不当,可能是未正确使用typedef。 50. In-line assembly not allowed - 不允许使用内联汇编,可能是因为编译选项设置问题。 51. Incompatible storage ...

    结构类型定义和结构变量说明

    ### 结构类型定义和结构变量说明 #### 一、结构类型的基本概念 “结构”(Structure)作为一种复合数据类型,在程序设计中具有重要的地位。它能够将不同类型的数据组织在一起,形成一个整体,以便于管理和操作这些...

    c语言与程序设计-第2章课后习题参考答案.pdf

    例如,使用int定义整型变量x,float定义浮点型变量h,char定义字符型变量,以及enum定义枚举类型,如月份和年份的枚举。 2. 运算符和表达式 - 文档展示了各种运算符的使用,包括算术运算符(如+,-,*,/),递增...

    Linux c编程一站式学习

    - **结构体**:存储多个不同类型数据的复合类型。 - **联合体**:共用同一段内存的不同类型数据。 - **19.5. C 内联汇编** - **定义**:在C代码中直接插入汇编指令。 #### 高级主题 ##### 第 20 章 链接详解 - *...

    C语言题库(含答案)程序设计语言.pdf

    这部分代码定义了三个整型变量,并使用复合赋值运算符进行赋值运算。 - k?48324,648k=60; 这是条件运算符的错误书写,正确的条件运算符应该是“?:”。 2. 函数和 sizeof 运算符 - void Func(char str[100]) ...

    日语版本java编码规范

    - 避免使用单字符的变量名,但在for循环计数器中允许使用。 - 如`int i = 0;` **1.5. 常量** - 常量全用大写字母,并用下划线分隔单词。 - 如`MY_CONSTANT_VALUE` #### 文件结构 **2.1. 源文件的组成与声明顺序...

    c语言试题库简单选择题.pdf

    - 结构体的定义和使用,如何定义结构体变量以及如何访问结构体中的成员。 - 枚举类型的定义及其在代码中的应用。 8. 文件操作与预处理指令: - 文件操作的相关函数,如fopen、fclose、fread、fwrite等。 - ...

    plsql复合数据类型

    本文将详细介绍PL/SQL中的两种主要复合数据类型——记录和集合,并探讨它们的定义、使用方法以及实际应用。 #### 二、记录(Record) **1. 记录的概念** 记录是PL/SQL中的一种复合数据类型,它由多个域组成,每个...

    plsql_oracle+8i+编程讲义

    - **标号和GOTO**:允许使用标号来标记程序段,并使用GOTO语句跳转到标号指定的位置。 - **NULL 语句**:当不需要执行任何操作时使用NULL语句。 #### 4. 游标的使用 - **游标概念**:用于检索查询结果集中的数据行...

    级C++试卷(含答案)doc[精选].pdf

    - 结构体用于将不同类型的数据组合成一个单一的复合类型。 9. 函数定义和默认参数: - 函数是C++中完成特定任务的代码块,可以通过参数传递数据。 - 函数可以定义带有默认参数值的参数,调用时可以省略这部分...

    2021-2022计算机二级等级考试试题及答案No.17956.docx

    - 如果在一个函数的复合语句中定义了一个变量,则该变量仅在该复合语句内有效。 #### 26. InputStream的关闭 - `InputStream`类的`close()`方法确实用于关闭输入流并释放系统资源。 #### 27. 局域网的扩展 - 多...

    c语言必备程序设计语言.pdf

    - 使用scanf和printf处理复合输入输出格式。 8. 其他 - 理解宏定义#define的使用。 - 学习如何编写和调用函数进行基本的数学运算,如add(a, b)。 上述内容反映了C语言编程的核心概念,覆盖了从基础语法到复杂...

    C语言分章节知识点及典型试题.doc

    本篇文档将深入讲解C语言的基础知识,涵盖数据类型、表达式、运算符、变量、程序结构等方面,并通过典型试题帮助读者巩固理解。 1. C语言的特点: - 语言简洁,易于学习和使用 - 运算符丰富,包括算术、比较、...

    C#实用书籍C# 语言规范

    - 值类型包括简单的数据类型和复合类型(如结构体)。 - 值类型直接存储在栈或堆上。 **2. 引用类型** - 引用类型包括类、接口、数组和委托等。 - 引用类型的实例通过指针存储在堆上。 **3. 装箱和取消装箱** - ...

Global site tag (gtag.js) - Google Analytics