博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PL/SQL学习笔记之记录
阅读量:2198 次
发布时间:2019-05-02

本文共 2314 字,大约阅读时间需要 7 分钟。

 

一:记录

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

    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)定义记录

TYPEtype_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) ISBEGIN   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;

 

转载于:https://www.cnblogs.com/ygj0930/p/8298192.html

你可能感兴趣的文章
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>
【LEETCODE】27-Remove Element
查看>>
【LEETCODE】66-Plus One
查看>>
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
【LEETCODE】88-Merge Sorted Array
查看>>
【LEETCODE】19-Remove Nth Node From End of List
查看>>
【LEETCODE】125-Valid Palindrome
查看>>
【LEETCODE】28-Implement strStr()
查看>>
【LEETCODE】6-ZigZag Conversion
查看>>
【LEETCODE】8-String to Integer (atoi)
查看>>
【LEETCODE】14-Longest Common Prefix
查看>>