ORACLE PL/SQL ¶ÔÏó(object)ѧϰ±Ê¼Ç(Ò»)
1¡¢¶ÔÏóÀàÐ͹淶
´´½¨¶ÔÏóÀàÐ͹淶µÄÓï·¨ÈçÏÂ
CREATE [OR REPLACE] TYPE [schema.] type_name
[AUTHID {CURRENT_USER|DEFINER}] AS OBJECT (
Attribute1 datatype,
[attribute2 datatype,…]
[method 1]
[method 2]);
/
ÆäÖÐAUTHIDָʾ½«À´Ö´Ðи÷½·¨Ê±£¬±ØÐëʹÓÃÔÚ´´½¨Ê±¶¨ÒåµÄCURRENT_USER»òDEFINERµÄȨÏÞ¼¯ºÏ¡£CURRENT_USERÊǵ÷Óø÷½·¨µÄÓû§£¬DEFINERÊǸöÔÏóÀàÐ͵ÄËùÓÐÕß¡£
1£©ÊôÐÔ
ÊôÐÔµÄÉùÃ÷ÓÐһЩÏÞÖÆ£¬°üÀ¨£º
ÊôÐÔµÄÉùÃ÷±ØÐë³öÏÖÔÚ·½·¨µÄÉùÃ÷ÒÔǰ¡£
Êý¾ÝÀàÐÍ¿ÉÒÔÊÇÈκÎÊý¾Ý¿âÊý¾ÝÀàÐÍ£¬µ«ÊDz»ÄܰüÀ¨ROWID,UROWID,LONG,LONG RAW,NCHAR,NCLOB,NVARCHAR2ÀàÐÍ£¬ÒÔ¼°PL/SQLµÄרÓÃÀàÐÍ»òÔÚPL/SQL°üÖж¨ÒåµÄÀàÐÍ¡£
²»ÄÜʹÓÃÄÇЩֻÄÜÔÚPL/SQLÖÐʹÓöø²»ÄÜÔÚÊý¾Ý¿âÖÐʹÓõÄÊý¾ÝÀàÐÍ¡£ÕâЩÀàÐͰüÀ¨BINARY_INTEGER,BOOLEAN,PLS_INTEGER,RECORDºÍREF CURSOR¡£
²»ÄÜʹÓÃNOT NULLÔ¼Êø£¬µ«ÊÇ¿ÉÒÔͨ¹ýÔÚ¶ÔÏóʵÀýÉ϶¨ÒåÒ»¸öÊý¾Ý¿â´¥·¢Æ÷À´´ïµ½ÏàͬЧ¹û¡£
ÊôÐÔÁбíÖÐÖÁÉÙ±ØÐëÓÐÒ»¸öÊôÐÔ¡£
²»ÄÜʹÓÃĬÈÏÖµ¡£
×¢Ò⣺²»ÄÜÖ±½ÓÔÚÊôÐÔ»ò¶ÔÏóÀàÐÍÉÏʹÓÃ%TYPEºÍ%ROWTYPE¡£µ«ÊÇ¿ÉÒÔÔÚ¶ÔÏóʵÀýµÄÊôÐÔÉÏʹÓÃËüÃÇ¡£
-- This example works fine. %TYPE is applied
-- to the variable, not the object type.
DECLARE
v_discount_price discount_price_obj;
v_price v_discount_price.price%TYPE;
BEGIN
NULL;
END;
/
-- This example throws an exception. %TYPE is applied
-- directly to the object type.
DECLARE
v_price discount_price_obj.price%TYPE;
BEGIN
NULL;
END;
/
¸´ºÏ¶ÔÏóÀàÐÍ
¸´ºÏ¶ÔÏóÀàÐÍ¿ÉÒÔÒÔij¸öÊôÐÔµÄÊý¾ÝÀàÐ͵ÄÐÎʽ£¬°üº¬ÁíÒ»¸ö¶ÔÏóÀàÐÍ¡£
CREATE OR REPLACE TYPE discount_price_obj AS OBJECT (
discount_rate NUMBER(10,4),
price NUMBER(10,2),
MEMBER FUNCTION discount_price RETURN NUMBER)
INSTANTIABLE
FINAL;
/
CREATE OR REPLACE TYPE inventory_obj AS OBJECT (
item_id NUMBER(10),
num_in_stock NUMBER(10),
reorder_status VARCHAR2(20),
price REF discount_price_obj);
/
2£©·½·¨
·½·¨¾ÍÊǹ
Ïà¹ØÎĵµ£º
Ò»£¬PL/SQL¿éµÄ½á¹¹ºÍ×é³ÉÔªËØ
PL/SQL³ÌÐòÓÉÉùÃ÷²¿·Ö£¬Ö´Ðв¿·Ö£¬Òì³£´¦Àí²¿·ÖÈý¸ö²¿·Ö×é³É¡£½á¹¹ÈçÏ£º
DECLARE
/*ÉùÃ÷²¿·Ö£ºÔÚ´ËÉùÃ÷PL/SQL±äÁ¿£¬ÀàÐͼ°Óα꣬ÒÔ¼°¾Ö²¿µÄ´æ´¢¹ý³ÌºÍº¯Êý*/
BEGIN
/*Ö´Ðв¿·Ö£º¹ý³Ì¼°sqlÓï¾ä£¬³ÌÐòÖ÷Òª²¿·Ö£¬ÊDZØÐëµÄ*/
EXCEPTION
/*Òì³£´¦Àí²¿·Ö£º´íÎó´¦Àí*/
END
PL/SQL¿ ......
ΪÁË´¦Àí SQL Óï¾ä£¬ORACLE ±ØÐë·ÖÅäһƬ½ÐÉÏÏÂÎÄ( context area )µÄÇøÓòÀ´´¦ÀíËù±ØÐèµÄÐÅÏ¢£¬ÆäÖаüÀ¨Òª´¦ÀíµÄÐеÄÊýÄ¿£¬Ò»¸öÖ¸ÏòÓï¾ä±»·ÖÎöÒÔºóµÄ±íʾÐÎʽµÄÖ¸ÕëÒÔ¼°²éѯµÄ»î¶¯¼¯(active set)¡£
ÓαêÊÇÒ»¸öÖ¸ÏòÉÏÏÂÎĵľä±ú( handle)»òÖ¸Õ롣ͨ¹ýÓα꣬PL/SQL¿ÉÒÔ¿ØÖÆÉÏÏÂÎÄÇøºÍ´¦ÀíÓï¾äʱÉÏÏÂÎÄÇø»á·¢ÉúÐ ......
»ù±¾·½·¨:
UPDATETEXT { table_name.dest_column_name dest_text_ptr }//{ Òª¸üеıíÒÔ¼° text¡¢ntext »ò image ÁеÄÃû³Æ,Ö¸ÏòÒª¸üÐ嵀 text¡¢ntext »ò image Êý¾ÝµÄÎı¾Ö¸ÕëµÄÖµ£¨ÓÉ TEXT ......
µÚ¶þÊ®Ì⣺
ÔõôÑù³éÈ¡ÖØ¸´¼Ç¼
񡜧
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 ......