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'
Ïà¹ØÎĵµ£º
ÒòΪҪ¸ù¾ÝºÜ¸´ÔӵĹæÔò´¦ÀíÓû§Êý¾Ý£¬ËùÒÔÕâÀïÓõ½Êý¾Ý¿âµÄÓαꡣƽʱ²»ÔõôÓÃÕâ¸ö£¬Ð´ÔÚÕâÀï´¿´âΪ×Ô¼º±¸¸öÍü¡£
--½«Ñ§¼®ºÅÖØ¸´µÄ·ÅÈëÁÙʱ±í tmp_zdsoft_unitive_code(³ý¸ßÖÐѧ¶ÎÍâ)
drop table tmp_zdsoft_unitive_code;
select s.id ,sch.school_code,sch.school_name,s.student_name,s.unitive_code,s.identity_car ......
µÚÒ»Ì⣺
Ϊ¹ÜÀíÒµÎñÅàѵÐÅÏ¢£¬½¨Á¢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) ......
1¡¢´¥·¢Æ÷µÄ¸ÅÄî
´¥·¢Æ÷Ò²ÊÇÒ»ÖÖ´øÃûµÄPL/SQL¿é¡£´¥·¢Æ÷ÀàËÆÓÚ¹ý³ÌºÍº¯Êý£¬ÒòΪËüÃǶ¼ÊÇÓµÓÐÉùÃ÷¡¢Ö´ÐкÍÒì³£´¦Àí¹ý³ÌµÄ´øÃûPL/SQL¿é¡£Óë°üÀàËÆ£¬´¥·¢Æ÷±ØÐë´æ´¢ÔÚÊý¾Ý¿âÖв¢ÇÒ²»Äܱ»¿é½øÐб¾µØ»¯ÉùÃ÷¡£
¶ÔÓÚ´¥·¢Æ÷¶øÑÔ£¬µ±´¥·¢Ê¼þ·¢ÉúµÄʱºò¾Í»áÏÔʽµØÖ´Ðиô¥·¢Æ÷£¬²¢ÇÒ´¥·¢Æ÷²»½ÓÊܲÎÊý¡£
´´½¨´¥·¢Æ÷µÄÓï·¨È ......
1¡¢¶ÔÏóÀàÐ͹淶
´´½¨¶ÔÏóÀàÐ͹淶µÄÓï·¨ÈçÏÂ
CREATE [OR REPLACE] TYPE [schema.] type_name
[AUTHID {CURRENT_USER|DEFINER}] AS OBJECT (
Attribute1 datatype,
[attribute2 datatype,…]
[method 1]
[method 2]);
/
ÆäÖÐAUTHIDָʾ½«À´Ö´Ðи÷½·¨Ê±£¬ ......