(十)PL/SQL记录

PL/SQL记录就是可以容纳不同类型的数据项的数据结构。记录由不同字段,类似于数据库表的行。例如,要保留跟踪图书馆中的书籍。可能要跟踪有关每本书下面的属性类似:标题,作者,主题,图书ID。包含一个字段为每个这些项目记录允许进行处理书籍作为一个逻辑单元信息。

PL/SQL可以处理记录的以下几种类型:
    基于表的记录
    基于游标的记录
    用户自定义记录
  
  
  
附:  
Select * from customers;
+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
+----+----------+-----+-----------+----------+  
  
  
  
一、基于表的记录
在%ROWTYPE属性使程序员创建基于表格和基于游标记录。
下面的例子将说明基于表的记录的概念。使用CUSTOMERS表:

DECLARE
   customer_rec customers%rowtype;
BEGIN
   SELECT * into customer_rec
   FROM customers
   WHERE id = 5;
   dbms_output.put_line(‘Customer ID: ‘ || customer_rec.id);
   dbms_output.put_line(‘Customer Name: ‘ || customer_rec.name);
   dbms_output.put_line(‘Customer Address: ‘ || customer_rec.address);
   dbms_output.put_line(‘Customer Salary: ‘ || customer_rec.salary);
END;
/
当上述代码在SQL提示符执行时,它会产生了以下结果:
Customer ID: 5
Customer Name: Hardik
Customer Address: Bhopal
Customer Salary: 9000
PL/SQL procedure successfully completed. 

二、基于游标记录
下面的例子将说明了基于游标记录的概念。使用CUSTOMERS表:

DECLARE
   CURSOR customer_cur is
      SELECT id, name, address
      FROM customers;
   customer_rec customer_cur%rowtype;
BEGIN
   OPEN customer_cur;
   LOOP
      FETCH customer_cur into customer_rec;
      EXIT WHEN customer_cur%notfound;
      DBMS_OUTPUT.put_line(customer_rec.id || ‘ ‘ || customer_rec.name);
   END LOOP;
END;
/
当上述代码在SQL提示符执行时,它产生了以下结果:
1 Ramesh
2 Khilan
3 kaushik
4 Chaitali
5 Hardik
6 Komal
PL/SQL procedure successfully completed. 

三、用户自定义记录
PL/SQL提供了一个用户定义的记录类型,允许定义不同的记录结构。记录由不同的字段组成。假设要跟踪图书馆的书籍。可能要跟踪有关每本书以下属性:标题、作者、科目、书籍ID。
记录类型定义格式为:
  TYPE
  type_name IS RECORD
    ( field_name1  datatype1  [NOT NULL]  [:= DEFAULT EXPRESSION],
     field_name2   datatype2   [NOT NULL]  [:= DEFAULT EXPRESSION],
     ...
     field_nameN  datatypeN  [NOT NULL]  [:= DEFAULT EXPRESSION);
  record-name  type_name;

这里是声明图书的记录方式:
DECLARE
TYPE books IS RECORD
 (title  varchar(50),
     author  varchar(50),
     subject varchar(100),
     book_id   number);
book1 books;
book2 books;

四、访问字段  
要访问记录的字段,我们使用点(.)运算符。成员访问运算符编码为记录变量名和访问字段期间。以下为例子来解释记录的使用:

DECLARE
   type books is record
      (title varchar(50),
       author varchar(50),
       subject varchar(100),
       book_id number);
   book1 books;
   book2 books;
BEGIN
   -- Book 1 specification
   book1.title  := ‘C Programming‘;
   book1.author := ‘Nuha Ali ‘;
   book1.subject := ‘C Programming Tutorial‘;
   book1.book_id := 6495407;
   -- Book 2 specification
   book2.title := ‘Telecom Billing‘;
   book2.author := ‘Zara Ali‘;
   book2.subject := ‘Telecom Billing Tutorial‘;
   book2.book_id := 6495700;
   -- Print book 1 record
   dbms_output.put_line(‘Book 1 title : ‘|| book1.title);
   dbms_output.put_line(‘Book 1 author : ‘|| book1.author);
   dbms_output.put_line(‘Book 1 subject : ‘|| book1.subject);
   dbms_output.put_line(‘Book 1 book_id : ‘ || book1.book_id);
 
   -- Print book 2 record
   dbms_output.put_line(‘Book 2 title : ‘|| book2.title);
   dbms_output.put_line(‘Book 2 author : ‘|| book2.author);
   dbms_output.put_line(‘Book 2 subject : ‘|| book2.subject);
   dbms_output.put_line(‘Book 2 book_id : ‘|| book2.book_id);
END;
/
当上述代码在SQL提示符执行时,它产生了以下结果:
Book 1 title : C Programming
Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700
PL/SQL procedure successfully completed.  

五、记录作为子程序参数
可以通过记录作为子程序参数,非常相似传递任何其他变量的方式。访问可以象在上面的例子 - 已访问类似的方式记录字段:

DECLARE
   type books is record
      (title  varchar(50),
      author  varchar(50),
      subject varchar(100),
      book_id   number);
   book1 books;
   book2 books;
PROCEDURE printbook (book books) IS
BEGIN
   dbms_output.put_line (‘Book  title :  ‘ || book.title);
   dbms_output.put_line(‘Book  author : ‘ || book.author);
   dbms_output.put_line( ‘Book  subject : ‘ || book.subject);
   dbms_output.put_line( ‘Book book_id : ‘ || book.book_id);
END;
 
BEGIN
   -- Book 1 specification
   book1.title  := ‘C Programming‘;
   book1.author := ‘Nuha Ali ‘;
   book1.subject := ‘C Programming Tutorial‘;
   book1.book_id := 6495407;
   -- Book 2 specification
   book2.title := ‘Telecom Billing‘;
   book2.author := ‘Zara Ali‘;
   book2.subject := ‘Telecom Billing Tutorial‘;
   book2.book_id := 6495700;
   -- Use procedure to print book info
   printbook(book1);
   printbook(book2);
END;
/
当上述代码在SQL提示符执行时,它产生了以下结果:
Book  title : C Programming
Book  author : Nuha Ali
Book subject : C Programming Tutorial
Book  book_id : 6495407
Book title : Telecom Billing
Book author : Zara Ali
Book subject : Telecom Billing Tutorial
Book book_id : 6495700
PL/SQL procedure successfully completed.
时间: 2024-10-16 13:31:48

(十)PL/SQL记录的相关文章

PL/SQL 记录 Record 简介

记录类型是表中当行数据结构的一个镜像.每个记录只存储一行数据,记录包含的是字段,而不是列. 1.用%rowtype属性隐式定义记录类型 declare individual individuals%rowtype --记录变量individual与individuals表的结构构成镜像,拥有表的所有字段 begin individual.individual_id:=1; --对变量的各个字段初始化 individual_id.first_name:='Jone'; individual_id.

PL/SQL 记录与集合

一.记录类型简介 不使用记录的PLSQL语句块 declare v_empno NUMBER; v_ename varchar2(20); v_job varchar2(9); v_mgr NUMBER; v_hiredate DATE; v_sal NUMBER(7,2); v_comm NUMBER(7,2); v_deptno NUMBER(2); begin select empno,ename,job,mgr,hiredate,sal,comm,deptno into v_empno,

20181017 PL/SQL 记录

1. 配置DB 链接文件,帮助中找到tnsnames.ora文件路径,进行注册数据库信息,登陆即可. 这只是个客户端,具体服务器段数据库情况不清楚. 2.写法区别PL/SQL 和SQL 变量定义 赋值 打印 执行 查询 Sql server中 select top 100 是成立的. Pl/sql中 只能select * from 表 where rownum>100 包的概念为了,分类存储过程,有点域的味道 很多基础的语句可以封装成存储过程,放入包中,减少代码书写 包和存储过程的关系? 定义变

二十四、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编程

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

PL/SQL 编程

一.什么是pl/sql pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展,pl/sql不仅允许嵌入Sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大. 二.pl/sql学习的必要性 1.提高应用程序的运行性能. 2.模块化的设计思想. 3.减少网络传输量. 4.提高安全性. 三.编写规范 1.注释 单行注释-- sql>select * from emp where empno

PL/SQL概述

PL/SQL全面支持SQL的数据操作,完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作. 构成一个PL/SQL程序的基本单位是程序块.PL/SQL程序块在执行时不必逐条在网络上传送SQL语句去执行,而是作为一组SQL语句的整体发送到Oracle.当程序第一句以DECLARE或BEGIN开头时,系统会自动识别出是PL/SQL语句.PL/SQL在SQLPLUS中运行时,当遇到斜杠时才提交数据库执行,而不像SQL命令,遇到分号就执行. 为了提高程序的可读性,Oracle建议用户按照以

[Oracle系列整理04] oracle pl/sql 基础

PL/SQL块中只能直接嵌入SELECT,DML(INSERT,UPDATE,DELETE)以及事务控制语句 (COMMIT,ROLLBACK,SAVEPOINT),而不能直接嵌入DDL语句(CREATE,ALTER,DROP)和DCL语句 (GRANT,REVOKE) 1.检索单行数据    1.1使用标量变量接受数据  v_ename emp.ename%type;  v_sal   emp.sal%type;  select ename,sal into v_ename,v_sal fro

Oracle PL/SQL随堂笔记总结

1.pl/sql编程 1.理解oracle的pl/sql的概念    2.掌握pl/sql编程技术(过程.函数.触发器)    pl/sql是标准sql语句的扩展    简介        1.过程.函数.触发器都是由pl/sql编写        2.过程.函数.触发器是在oracle中        3.pl/sql是非常强大的过程语言        4.过程.函数等可以在java程序被调用    学习必要性:        1.提高应用程序的性能        2.模块化的设计思想