易截截图软件、单文件、免安装、纯绿色、仅160KB

ORACLE PL/SQL 对象(object)学习笔记(二)

4、对象依赖性
 
CREATE OR REPLACE TYPE Obj1 AS OBJECT (
f1 NUMBER,
f2 VARCHAR2(10),
f3 DATE
);
/

CREATE OR REPLACE TYPE Obj2 AS OBJECT (
f1 DATE,
f2 CHAR(1)
);
/

CREATE OR REPLACE TYPE Obj3 AS OBJECT (
a Obj1,
b Obj2
);
/
  
 
OBJ3依赖于OBJ1和OBJ2。所以删除或修改OBJ1或OBJ2之前没有首先删除OBJ3是非法的。
 
 
5、对象标识符和对象引用
 
对象标识符(object identifier ,简称为OID)是某种类型的永久对象的唯一定位符。与ROWID变量相类似(它唯一的标识了一行),对象标识符唯一标识了一个对象。
 
我们知道,REF CURSOR变量与CURSOR变量是不同的,它仅仅是指向一个游标的指针。对象引用也是一样。对象引用是一个指向对象的指针,而不是对象本身。在声明部分或表定义中声明对象引用的语法是:
 
Variable_name REF object_type;
 
这里Variable_name是对象引用的名字,而object_type是对象类型。
例如下面定义的ClassObj类型包含一个指向RoomObj的引用:
 
 
 
CREATE OR REPLACE TYPE ClassObj AS OBJECT (
department CHAR(3),
course NUMBER(3),
description VARCHAR2(2000),
max_students NUMBER(3),
current_students NUMBER(3),
num_credits NUMBER(1),
room REF RoomObj
);
/
  
 
6、在DML语句中使用对象
 
1)INSERT
在需要使用对象的INSERT 语句中, 你可以使用对象构造函数,或者一个对象的PL/SQL变量,它们都包含了要插入的对象。对于INSERT语句而言,对象的行为方式和标量类型是很相似的。
 
2)UPDATE
在UPDATE语句中的WHERE或VALUES子句中,对象可以被用作联编变量。
下面的块创建了一个新的房间,并更新classes表以反映新插入的数值。
 
DECLARE
v_NewRoom RoomObj :=
RoomObj(99990, 'Building 7', 200, 50, 'Discussion Room F');
v_RoomRef REF RoomObj;
BEGIN
-- The RETURNING clause on this statement puts a reference to the
-- newly inserted room into v_RoomRef.
INSERT INTO rooms r VALUES (v_NewRoom)
RETURNING REF(r) INTO v_RoomRef;

UPDATE classes
SET room = v_RoomRef
WHERE department = 'NUT'


相关文档:

数据库行转列的sql语句(转)


数据库行转列的sql语句
问题描述
假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
现在 想写 sql 语句     查询后结果 为    
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82& ......

写ORACLE SQL

一.按英文字母排序:
        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 ......

[转]SQL行列互换

问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成(得到如下结果): 
姓名 语文 数学 物理 
---- ---- --- ......

(转)SQL经典面试题集(三)


第二十题:
怎么样抽取重复记录
表:
id name
--------
1 test1
2 test2
3 test3
4 test4
5 test5
6 test6
2 test2
3 test3
2 test2
6 test6
查出所有有重复记录的数据,用一句sql 来实现
create table D(
id varchar (20),
name varchar (20)
)
insert into D values('1','test1')
insert into D v ......

06—PL/SQL编程

PL/SQL: Oracle中的SQL过程化编程语言
1. PL/SQL程序是由块结构构成,格式如下:
  [DECLARE
   --声明部分
 ]
  BEGIN
   -- 主体
   [EXCEPTION
     -- 异常处理块
   ]
  END;
  /  --块的结束
2.变量
简单变量: ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号