orientdb数据库-PL/SQL记录

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

在本章中,我们将讨论和学习PL/SQL中的记录。 记录是可以容纳不同种类的数据项的数据结构。 记录由不同的字段组成,类似于数据库表的一行。

例如,想要在图书馆中跟踪记录图书信息。可能希望跟踪每本书的以下属性,例如标题,作者,主题,图书ID。 包含每个这些项目的字段的记录允许将图书视为逻辑单元,并允许以更好的方式组织和表示其信息。

PL/SQL可以处理以下类型的记录 –

  • 基于表的记录
  • 基于游标的记录
  • 用户定义的记录

基于表的记录

%ROWTYPE属性使程序员能够创建基于表和基于游标的记录。
以下示例说明了基于表的记录的概念。这里将使用前面章节中创建和使用的customers表,表结构和数据如下 –

CREATE TABLE CUSTOMERS(     ID   INT NOT NULL,     NAME VARCHAR (20) NOT NULL,     AGE INT NOT NULL,     ADDRESS CHAR (25),     SALARY   DECIMAL (18, 2),            PRIMARY KEY (ID)  ); -- 插入示例数据 INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );    INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );    INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );  INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );   INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );    INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)  VALUES (6, 'Komal', 22, 'MP', 4500.00 ); 

使用表记录示例代码 –

SET SERVEROUTPUT ON SIZE 99999; DECLARE     customer_rec customers%rowtype;  BEGIN     SELECT * into customer_rec     FROM customers     WHERE id = 5;      dbms_output.put_line('客户ID: ' || customer_rec.id);     dbms_output.put_line('客户姓名: ' || customer_rec.name);     dbms_output.put_line('客户地址: ' || customer_rec.address);     dbms_output.put_line('客户薪资: ' || customer_rec.salary);  END;  / 

当上述代码在SQL提示符下执行时,它会产生以下结果 –

PL/SQL记录

基于游标的记录

以下示例说明了基于游标的记录的概念,下面将使用在前面创建和使用的CUSTOMERS表,参考示例代码如下 –

SET SERVEROUTPUT ON SIZE 99999; 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提示符下执行时,它会产生以下结果 –

PL/SQL记录

用户定义的记录

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; 

图书(Book)记录按以下方式声明 –

DECLARE  TYPE books IS RECORD  (    title  varchar(50),     author  varchar(50),     subject varchar(100),     book_id   number );  book1 books;  book2 books; 

访问字段

要访问记录的任何字段,可通过使用点(.)运算符。成员访问操作符被编码为记录变量名称和希望访问的字段。看盾以下一个例子中如何使用记录 –

SET SERVEROUTPUT ON SIZE 99999; 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 := 'TanHao';      book1.subject := 'C Programming Tutorial';     book1.book_id := 1920122;      -- Book 2 specification     book2.title := 'Telecom Billing';     book2.author := 'LiDawei';     book2.subject := 'Telecom Billing Tutorial';     book2.book_id := 2032942;      -- 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 : TanHao Book 1 subject : C Programming Tutorial Book 1 book_id : 1920122 Book 2 title : Telecom Billing Book 2 author : LiDawei Book 2 subject : Telecom Billing Tutorial Book 2 book_id : 2032942  PL/SQL 过程已成功完成。 

将记录作为子程序参数

可以像传递任何其他变量一样将记录作为子程序参数传递。还可以像访问上面的示例一样访问记录字段,参考下示例代码 –

SET SERVEROUTPUT ON SIZE 99999; 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 := 'Haoqiang Tang';      book1.subject := 'C Programming Tutorial';     book1.book_id := 8321407;     -- Book 2 specification     book2.title := 'Telecom Billing';     book2.author := 'Maxsu';     book2.subject := 'Telecom Billing Tutorial';     book2.book_id := 921300;       -- Use procedure to print book info     printbook(book1);     printbook(book2);  END;  / 

当上述代码在SQL提示符下执行时,它会产生以下结果 –

Book  title :  C Programming Book  author : Haoqiang Tang Book  subject : C Programming Tutorial Book book_id : 8321407 Book  title :  Telecom Billing Book  author : Maxsu Book  subject : Telecom Billing Tutorial Book book_id : 921300  PL/SQL 过程已成功完成。 

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 plsql数据库/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/05/16/orientdb数据库-pl-sql记录/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注