zoukankan      html  css  js  c++  java
  • PL/SQL学习笔记之记录

    一:记录

        记录是一种高可以容纳不同数据类型的数据的数据结构。

        PL/SQL可以处理记录的以下几种类型:

    • 基于数据表

    • 基于游标的记录

    • 用户自定义的记录

    二:使用 %ROWTYPE属性 创建基于表格或基于游标的记录【基于表、游标的记录  其实就是  数据表的一行
        1)基于表的记录

    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;

        2)基于游标的记录(最常用)

    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;

    三:用户自定义的记录:把记录当作一种数据结构来使用

    1)定义记录

    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;

    2)声明记录变量

    record_var type_name;

    3)使用记录变量

    record_var.attribute   //访问记录中的字段
    func(record_var)  /记录变量做参数,传递给函数

    例子:

    DECLARE
       type books is record //定义 books 记录
          (title  varchar(50),
          author  varchar(50),
          subject varchar(100),
          book_id   number);
       book1 books; //创建两个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;
  • 相关阅读:
    一个简单的CI分页类
    php版给UEditor的图片在线管理栏目增加图片删除功能
    PHP 中获取文件名及路径
    session共享
    linux进阶之Tomcat服务篇
    Linux进阶之环境变量文件/etc/profile、/etc/bashrc、/etc/environment
    shell应用之简单计算器
    Linux进阶之日志管理
    Linux进阶之LAMP和LNMP动态网站搭建
    linux进阶之子网划分
  • 原文地址:https://www.cnblogs.com/ygj0930/p/8298192.html
Copyright © 2011-2022 走看看