ORACLE PL/SQL 对象(object)学习笔记(三)
7、对象类型继承
对象类型实现允许我们创建一个基类型,或叫父类型,这种类型的属性或方法可以被另一个对象类型继承。然后可以创建一个子类型,或叫孩子类型,直接使用继承过来的属性或方法,或者用自己的属性和方法重写父类型的属性或方法。
INSTANTIABLE关键字表示我们可以从该类型中实例化或者创建对象实例。
FINAL关键字是指该对象类型下面不再有子类型,没有其他类型会继承该对象类型。
下面这个例子说明了继承关系,inventory_obj被book_obj继承。
CREATE OR REPLACE TYPE inventory_obj AS OBJECT (
item_id NUMBER (10),
num_in_stock NUMBER (10),
reorder_status VARCHAR2 (20 CHAR),
price NUMBER(10,2),
CONSTRUCTOR FUNCTION inventory_obj (
item_id IN NUMBER,
num_in_stock IN NUMBER,
price IN NUMBER
)
RETURN SELF AS RESULT,
MEMBER PROCEDURE print_inventory,
MEMBER PROCEDURE print_status,
MEMBER PROCEDURE print_price
)
INSTANTIABLE NOT FINAL;
/
CREATE OR REPLACE TYPE BODY inventory_obj
AS
CONSTRUCTOR FUNCTION inventory_obj (
item_id IN NUMBER,
num_in_stock IN NUMBER,
price IN NUMBER
)
RETURN SELF AS RESULT
IS
BEGIN
SELF.item_id := item_id;
SELF.num_in_stock := num_in_stock;
SELF.price := price;
RETURN;
END;
MEMBER PROCEDURE print_inventory
IS
BEGIN
DBMS_OUTPUT.put_line ('INVENTORY FOR BOOKSTORE1');
DBMS_OUTPUT.put_line ('========================');
DBMS_OUTPUT.put_line ( 'Item number '
|| SELF.item_id
|| ' has '
|| SELF.num_in_stock
|| ' in stock'
);
END print_inventory;
MEMBER PROCEDURE print_status
IS
v_status VARCHAR2 (20);
BEGIN
IF SELF.num_in_stock > 0
THEN
v_status := 'IN STOCK';
ELSE
v_status := 'OUT O
相关文档:
数据库行转列的sql语句
问题描述
假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
现在 想写 sql 语句 查询后结果 为
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82& ......
一.按英文字母排序:
select * from table order by nlssort(name,'NLS_SORT=schinese_pinyin_M');
二. 写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)
答:SQL语句如下:
select stu.sno, stu.sname
from student stu
where (select count(*) from s ......
包由包规范和包体两部分组成。
1、包规范(Package Specification)
包规范,也叫做包头,包含了有关包的内容的信息。但是,它不包含任何过程的代码。
创建包头的语法一般如下
CREATE [OR REPLACE] PACKAGE package_name {IS | AS}
Procedure_name | function_name | variable_declaration | type_def ......