【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。

1.案例: 通过record类型处理一行多列的数据

复合变量--record 记录类型
record:在一个变量中可以存储多个区域,每个区域可以是一个标量、记录或table (用于处理一行多列的信息)

SQL> declare
  2     type emp_record  is record                          //定义变量类型为record
  3     ( v_ename emp.ename%type,
  4       v_sal   emp.sal%type,
  5       v_deptno emp.deptno%type
  6      );
  7
  8     emp_rcd  emp_record ;
  9
 10     begin
 11
 12       select ename,sal,deptno into  emp_rcd from emp where empno=#
 13
 14       dbms_output.put_line (‘Employees name is: ‘||emp_rcd.v_ename);
 15       dbms_output.put_line (‘Employees salary is: ‘||emp_rcd.v_sal);
 16       dbms_output.put_line (‘Employees deparment number is: ‘||emp_rcd.v_deptno);
 17     end;

2.通过%rowtype处理一行数据

SQL> declare
  2     emp_rcd  emp%rowtype ;
  3
  4     begin
  5
  6       select * into  emp_rcd from emp where empno=#
  7
  8       dbms_output.put_line (‘Employees name is: ‘||emp_rcd.ename);
  9       dbms_output.put_line (‘Employees salary is: ‘||emp_rcd.sal);
 10       dbms_output.put_line (‘Employees hiredate is: ‘||to_char(emp_rcd.hiredate,‘yyyy-mm-dd‘));
 11       dbms_output.put_line (‘Employees deparment number is: ‘||emp_rcd.deptno);
 12     end;

3.案例:通过table类型变量处理一列多行的数据
table 类型(处理单列多行数据)
table:  相当于高级语言中的数组,但是需要注意的是在高级语言中数组的下标不能为负数,而pl/sql是可以为负数的,并且表元素的下标没有限制
         (处理单列多行数据)

SQL> declare
  2   type emp_tab  is table of emp.ename%type            //定义变量类型为table类型
  3   index by binary_integer;                            //建立索引
  4
  5   emp_table   emp_tab;
  6
  7  begin
  8
  9    select ename into emp_table(1) from emp where empno=7788;
 10     select ename into emp_table(2) from emp where empno=7369;
 11      select ename into emp_table(3) from emp where empno=7499;
 12
 13    dbms_output.put_line(‘Employees 7788 name is: ‘||emp_table(1));
 14    dbms_output.put_line(‘Employees 7369 name is: ‘||emp_table(2));
 15    dbms_output.put_line(‘Employees 7499 name is: ‘||emp_table(3));
 16  end;
SQL> declare
  2   type emp_tab  is table of emp.ename%type
  3   index by binary_integer;
  4
  5    type emp_t  is table of emp.sal%type
  6   index by binary_integer;
  7
  8   emp_table   emp_tab;
  9   emp_t_sal   emp_t;
 10
 11  begin
 12
 13    select ename into emp_table(1) from emp where empno=7788;
 14     select ename into emp_table(2) from emp where empno=7369;
 15      select ename into emp_table(3) from emp where empno=7499;
 16
 17     select sal into emp_t_sal(1) from emp where empno=7788;
 18     select sal into emp_t_sal(2) from emp where empno=7369;
 19     select sal into emp_t_sal(3) from emp where empno=7499;
 20
 21    dbms_output.put_line(‘Employees 7788 name is: ‘||emp_table(1));
 22    dbms_output.put_line(‘Employees 7369 name is: ‘||emp_table(2));
 23    dbms_output.put_line(‘Employees 7499 name is: ‘||emp_table(3));
 24
 25      dbms_output.put_line(‘Employees 7788 salary is: ‘||emp_t_sal(1));
 26    dbms_output.put_line(‘Employees 7369 salary is: ‘||emp_t_sal(2));
 27    dbms_output.put_line(‘Employees 7499 salary is: ‘||emp_t_sal(3));
 28  end;

4.在table类型里嵌套record类型 ,可以处理多行多列的数据

SQL> declare
  2          type emp_table_type is table of emp%rowtype
  3           index by binary_integer;
  4            emp_tab emp_table_type;
  5
  6        begin
  7          select * into emp_tab(1) from emp where empno=7788;
  8          select * into emp_tab(2) from emp where empno=7369;
  9         dbms_output.put_line(‘7788 Ename is: ‘||emp_tab(1).ename );
 10         dbms_output.put_line(‘7788 Salary is: ‘|| emp_tab(1).sal);
 11         dbms_output.put_line(‘7788 Deparment ID is: ‘||emp_tab(1).deptno);
 12         dbms_output.put_line(‘7369 Ename is: ‘||emp_tab(2).ename);
 13         dbms_output.put_line(‘7369 Salary is: ‘|| emp_tab(2).sal);
 14         dbms_output.put_line(‘7369 Deparment ID is: ‘||emp_tab(2).deptno);
 15        end;
时间: 2024-08-18 20:51:35

【PL/SQL练习】复合变量: 可以一次传递多个值到变量中。的相关文章

二十四、oracle pl/sql 变量

一.变量介绍在编写pl/sql程序时,可以定义变量和常量:在pl/sql程序中包括有:1).标量类型(scalar)2).复合类型(composite) --用于操作单条记录3).参照类型(reference) --用于操作多条记录4).lob(large object) 二.标量(scalar)——常用类型1).在编写pl/sql块时,如果要使用变量,需在定义部分定义变量.pl/sql中定义变量和常量的语法如下:identifier [constant] datatype [not null]

PL/SQL编程_变量

在PL/SQL块中可以定义变量和数据类型,这使得PL/SQL块对数据的处理更加灵活. 变量和类型的定义放在PL/SQL块的变量声明部分. 变量的定义与使用 变量的定义有两种格式,分别为:变量名 类型 [约束][DEFAULT 默认值]变量名 类型[约束][:=初始值]其中用方括号限定的部分是可选的. 约束用来规定变量必须满足的条件,比如“ NOTNULL”约束指定变量不能为空值,这样在定义变量的时候就要为其指定初始值或默认值.变量名要遵守一定的命名规则. 变量名必须以字母开头,包含数字.字母.下

【PL/SQL编程基础】

[PL/SQL编程基础]语法: declare 声明部分,例如定义变量.常量.游标 begin 程序编写,SQL语句 exception 处理异常 end: / 正斜杠表示执行程序快范例 -- Created on 2016/8/22 by VITAS declare 定义变量 v_num number; v_eno number; v_ename varchar2(10); begin v_num:=234; v_eno:=&empno; 接收输入变量 select ename into v_

Oracle PL/SQL语句基础学习笔记(上)

PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE server和其它工具中了,近几年中很多其它的开发者和DBA開始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件.以及怎样设计并运行一个PL/SQL程序. 1.PL/SQL的长处 从版本号6開始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的长处以及其独有的数据管理的便利性,那么你非常难想象ORACLE缺了PL/SQL的情形.PL/SQL 不是一个独立的产品,他

PL/SQL 总结

一..基本语法 PL/SQL的结构块如下: declare --声明变量.类型.游标 begin --程序执行的部分,类似main方法 exception --针对异常,提供如何处理的机制 --when ....then.... end; 注意,没有用的部分,就 不需要写,比如程序的确是没有异常要处理,那么exception就不写 建议的命名方法: 标识符  命名规则 例子 程序变量  V_name V_name 程序常量  C_Name C_company_name 游标变量        

PL/SQL数据开发那点事

PL/SQL开发那点事----->PL/SQL开发过程中异常处理 用户编写的PL/SQL块在执行过程中不可避免地要发生一些错误. 这里涉及的错误并不是由于程序的语法错误引起的,而是因为处理的数据超出了处理的范围而引发的错误.如果给这样的错误起一个名字,这就是异常.当PL/SQL块在执行过程中检测到一个错误时,就会抛出相应的异常.在块中应当处理这样的异常,否则会引起应用程序运行停止. 异常处理程序 异常一般是在PL/SQL程序执行错误时由数据库服务器抛出,也可以在PL/SQL块中由程序员在一定的条

PL/SQL简介与基本语法

PL/SQL的简介: PLSQL 是Oracle公司在SQL基础上进行扩展而成的一种过程语言.PLSQL提供了典型的高级语言特 性,包括封装,例外处理机制,信息隐藏,面向对象等:并把最新的编程思想带到了数据库服务器和工具 集中. 与Java, C#相比 ,PLSQL的优势是:SQL语言可以直接写到PLSQL的"块"中或者是PLSQL的过程. 函数中.没有必要向java那样先创建Statement对象来执行SQL; 这使得PLSQL成为很强大的事务处理语 言,即:使用SQL来处理数据,使

第三章 PL/SQL编程

3.1 PL/SQL基础知识    3.1.1 什么是PL/SQL?        PL/SQL是结合Oracle过程语言和结构化查询语言的一种扩展语言        3.1.1.1 PL/SQL体系结构(教材76页图3.2)        3.1.1.2 PL/SQL块简介             定义:PL/SQL是一种块结构语言,它将一组语句放在一个块中.            组成:声明部分.执行部分.异常处理部分.            结构:[DECLARE]            

十九、oracle pl/sql简介

一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大. 二.为什么要学pl/sql1.提高应用程序的运行性能2.模块化的设计思想(分页的过程,订单的过程,转账的过程..)3.减少网络传输量4.提高安全性(sql会包括表名,有时还可能有密码,传输的时候会泄露.PL/SQL就不会) 三.