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£©ÊÇijÖÖÀàÐ͵ÄÓÀ¾Ã¶ÔÏóµÄΨһ¶¨Î»·û¡£ÓëROWID±äÁ¿ÏàÀàËÆ£¨ËüΨһµÄ±êʶÁËÒ»ÐУ©£¬¶ÔÏó±êʶ·ûΨһ±êʶÁËÒ»¸ö¶ÔÏó¡£
ÎÒÃÇÖªµÀ£¬REF CURSOR±äÁ¿ÓëCURSOR±äÁ¿ÊDz»Í¬µÄ£¬Ëü½ö½öÊÇÖ¸ÏòÒ»¸öÓαêµÄÖ¸Õë¡£¶ÔÏóÒýÓÃÒ²ÊÇÒ»Ñù¡£¶ÔÏóÒýÓÃÊÇÒ»¸öÖ¸Ïò¶ÔÏóµÄÖ¸Õ룬¶ø²»ÊǶÔÏó±¾Éí¡£ÔÚÉùÃ÷²¿·Ö»ò±í¶¨ÒåÖÐÉùÃ÷¶ÔÏóÒýÓõÄÓï·¨ÊÇ£º
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'
Ïà¹ØÎĵµ£º
oracle±í¿Õ¼ä²Ù×÷Ïê½â
1
2
3×÷Õߣº À´Ô´£º ¸üÐÂÈÕÆÚ£º2006-01-04
5
6
7½¨Á¢±í¿Õ¼ä
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
Ò»£¬PL/SQL¿éµÄ½á¹¹ºÍ×é³ÉÔªËØ
PL/SQL³ÌÐòÓÉÉùÃ÷²¿·Ö£¬Ö´Ðв¿·Ö£¬Òì³£´¦Àí²¿·ÖÈý¸ö²¿·Ö×é³É¡£½á¹¹ÈçÏ£º
DECLARE
/*ÉùÃ÷²¿·Ö£ºÔÚ´ËÉùÃ÷PL/SQL±äÁ¿£¬ÀàÐͼ°Óα꣬ÒÔ¼°¾Ö²¿µÄ´æ´¢¹ý³ÌºÍº¯Êý*/
BEGIN
/*Ö´Ðв¿·Ö£º¹ý³Ì¼°sqlÓï¾ä£¬³ÌÐòÖ÷Òª²¿·Ö£¬ÊDZØÐëµÄ*/
EXCEPTION
/*Òì³£´¦Àí²¿·Ö£º´íÎó´¦Àí*/
END
PL/SQL¿ ......
Êý¾Ý¿âÐÐתÁеÄsqlÓï¾ä
ÎÊÌâÃèÊö
¼ÙÉèÓÐÕÅѧÉú³É¼¨±í(CJ)ÈçÏÂ
Name Subject Result
ÕÅÈý ÓïÎÄ 80
ÕÅÈý Êýѧ 90
ÕÅÈý ÎïÀí 85
ÀîËÄ ÓïÎÄ 85
ÀîËÄ Êýѧ 92
ÀîËÄ ÎïÀí 82
ÏÖÔÚ Ïëд sql Óï¾ä ²éѯºó½á¹û Ϊ
ÐÕÃû ÓïÎÄ Êýѧ ÎïÀí
ÕÅÈý 80 90 85
ÀîËÄ 85 92 82& ......
µÚÒ»Ì⣺
Ϊ¹ÜÀíÒµÎñÅàѵÐÅÏ¢£¬½¨Á¢3¸ö±í£º
S(S#,SN,SD,SA)S#,SN,SD,SA·Ö±ð´ú±íѧºÅ£¬Ñ§Ô±ÐÕÃû£¬ËùÊôµ¥Î»£¬Ñ§Ô±ÄêÁä
C(C#,CN)C#,CN·Ö±ð´ú±í¿Î³Ì±àºÅ£¬¿Î³ÌÃû³Æ
SC(S#,C#,G) S#,C#,G·Ö±ð´ú±íѧºÅ£¬ËùÑ¡µÄ¿Î³Ì±àºÅ£¬Ñ§Ï°³É¼¨
(1)ʹÓñê×¼SQLǶÌ×Óï¾ä²éѯѡÐ޿γÌÃû³ÆÎª’˰ÊÕ»ù´¡’µÄѧԱѧºÅºÍÐÕÃû?
(2) ......
µÚʮһÌ⣺
Óбístudents(name,class,grade),ÇëÓñê×¼sqlÓï¾äÍê³É
name class grade
ÕÅÈý Êýѧ 81
ÀîËÄ ÓïÎÄ 70
ÍõÎå Êýѧ 90
ÕÅÈý ÓïÎÄ 60
ÀîËÄ Êýѧ 100
ÍõÎå ÓïÎÄ 90
ÍõÎå Ó¢Óï 81
ÒªÇó: ÓÃsqlÓï¾äÊä³ö¸÷ÃŹ¦¿Î¶¼´óÓÚ80·ÖµÄͬѧÐÕÃû?
create table students (
name varchar(25),
class varchar(25),
grad ......