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£©·½·¨
·½·¨¾ÍÊǹ
Ïà¹ØÎĵµ£º
Ð¶ÔØSQL Server 2005µÄ·½·¨Ö®Ò»£¬·ÅÔÚÕâ¶ùÖ»ÊÇΪÁ˼Çס£º
1£º°ÑSQL Server2005µÄ°²×°ÅÌ£¨°²×°Îļþ£©·ÅÈëµ½¹âÇý¡£
2£º´ò¿ªÈçÏ·¾¶£º¿ªÊ¼/ÔËÐУ¬ÊäÈ룺cmd
3£ºÊäÈëÏÂÁÐÃüÁ
Start /wait \setup.exe /qb REMOVE=ALL INSTANCENAME=£º¹ÜÇøÅÌ·û£¬ÀýÈ磺G£º¡¢H£ºµÈ£»£º°²×°µÄSQLServerʵÀýÃû³Æ£¬Ä¬ÈÏֵΪ£º¹¦ÄÜ ......
Ò».°´Ó¢ÎÄ×ÖĸÅÅÐò:
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 ......
using System;
using System.Text.RegularExpressions;
using Microsoft.SqlServer.Server;
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true,IsPrecise = true)]
public static bool RegExIsMatch(string pattern,string matchString)
{
......
µÚ¶þÊ®Ì⣺
ÔõôÑù³éÈ¡ÖØ¸´¼Ç¼
񡜧
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 ......