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£©·½·¨
·½·¨¾ÍÊǹ
Ïà¹ØÎĵµ£º
oracle±í¿Õ¼ä²Ù×÷Ïê½â
1
2
3×÷Õߣº À´Ô´£º ¸üÐÂÈÕÆÚ£º2006-01-04
5
6
7½¨Á¢±í¿Õ¼ä
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
1. ËÀËøÔÀí
¸ù¾Ý²Ù×÷ϵͳÖе͍Ò壺ËÀËøÊÇÖ¸ÔÚÒ»×é½ø³ÌÖеĸ÷¸ö½ø³Ì¾ùÕ¼Óв»»áÊͷŵÄ×ÊÔ´£¬µ«Òò»¥ÏàÉêÇë±»ÆäËû½ø³ÌËùÕ¾Óò»»áÊͷŵÄ×ÊÔ´¶ø´¦ÓÚµÄÒ»ÖÖÓÀ¾ÃµÈ´ý״̬¡£
ËÀËøµÄËĸö±ØÒªÌõ¼þ£º
»¥³âÌõ¼þ(Mutual exclusion)£º×ÊÔ´²»Äܱ»¹²Ïí£¬Ö»ÄÜÓÉÒ»¸ö½ø³ÌʹÓá£
ÇëÇóÓë±£³ÖÌõ¼þ(Ho ......
1. select replace(CA_SPELL,' ','') from hy_city_area È¥³ýÁÐÖеÄËùÓпոñ
2. LTRIM£¨£© º¯Êý°Ñ×Ö·û´®Í·²¿µÄ¿Õ¸ñÈ¥µô
3. RTRIM£¨£© º¯Êý°Ñ×Ö·û´®Î²²¿µÄ¿Õ¸ñÈ¥µô
4. select LOWER(replace(CA_SPELL,' ','')) f ......
Ò».°´Ó¢ÎÄ×ÖĸÅÅÐò:
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 ......
µÚʮһÌ⣺
Óбí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 ......