OracleϵÁУºRecord + PL/SQL±í
OracleϵÁУºRecordºÍPL/SQL±í
Ò»£¬Ê²Ã´ÊǼǼRecordºÍPL/SQL±í£¿
¼Ç¼Record£ºÓɵ¥ÐжàÁеıêÁ¿ÀàÐ͹¹³ÉµÄÁÙʱ¼Ç¼¶ÔÏóÀàÐÍ¡£ÀàËÆÓÚ¶àάÊý×é¡£
PL/SQL±í£ºÓɶàÐе¥ÁеÄË÷ÒýÁкͿÉÓÃÁй¹³ÉµÄÁÙʱË÷Òý±í¶ÔÏóÀàÐÍ¡£ÀàËÆÓÚһάÊý×éºÍ¼üÖµ¶Ô¡£
¶¼ÊÇÓû§×Ô¶¨ÒåÊý¾ÝÀàÐÍ¡£
¶þ£¬Record + PL/SQL±í ÓÃ;ÊÇʲô£¿
Record + PL/SQL±í¿ÉÒÔ½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢¡£ÕâÑùÎÒÃǾͿÉʹÓÃRecord + PL/SQL±íÔÚÐèҪʱ·â×°Ò»¸öÁÙʱµÄ±í¶ÔÏ󣬽øÐд«µÝºÍ²Ù×÷¡£
ͨ¹ýRecord×Ô¶¨Òå±í½á¹¹£¬·â×°Ò»Ìõ¼Ç¼¡£PL/SQL±íÉùÃ÷ ¿ÉÓÃÁÐ ÀàÐÍ ÎªRecordÀàÐÍ£¨½«¿ÉÓÃÁÐÖ¸ÏòRecordÀàÐͱäÁ¿£©£¬Ã¿¸öË÷Òý¶ÔÓ¦Ò»¸öRecordÀàÐͱäÁ¿¡£
Èý£¬Ê¹ÓÃRecord + PL/SQL±í½øÐÐÊý¾ÝµÄ¶àÐжàÁд洢
¢ÙÉùÃ÷RecordÀàÐͺÍPL/SQL±í£¬
ÆäÖÐPL/SQL±íµÄË÷ÒýÁÐΪÖ÷¼üÔ¼ÊøºÍÎ¨Ò»Ô¼ÊøÁлò×ÔÔöInteger¡£¿ÉÓÃÁÐΪRecordÀàÐÍ»ò%RowTypeÀàÐÍ¡£
¢ÚÌî³äPL/SQL±í¿ÉÓÃÁУ¨RecordÀàÐÍ£©£ºÍ¨¹ýË÷ÒýÖ¸ÏòRecord£¬Ê¹ÓÃRecord·ÃÎʼǼ³ÉÔ±¡£
Óï·¨£º
PL/SQL±íÃû(Ë÷ÒýÁÐÖµ).¼Ç¼³ÉÔ± := ¼Ç¼³ÉÔ±ÀàÐÍÖµ£»
»ò
PL/SQL±íÃû(Ë÷ÒýÁÐÖµ) := RecordÀàÐͱäÁ¿£»
--×¢ÒâÆäPL/SQL±íÖÐÉùÃ÷µÄ¿ÉÓÃÁÐÒªºÍÕâÀ︳ֵµÄRecordÀàÐͱäÁ¿½á¹¹Ò»Ñù
¢Û·ÃÎÊPL/SQL±í
ÏÂÃæÊÇÀý×Ó£º
/*conn scott/tiger
Create table empa as select * from emp;
*/
Àý×Ó£º
Declare
Type RecType Is Record
(
rno empa.empno%type,
rname empa.ename%type,
rsal empa.sal%type
);
Type TabType Is Table Of RecType Index By Binary_Integer;
MyTab TabType;
vN Number;
Begin
--Ìî³ä
vN := 1;
For varR In (Select * from empa Order By empno ASC)
Loop
MyTab(vN).rno := varR.empno;
MyTab(vN).rname := varR.ename;
MyTab(vN).rsal := varR.sal;
vN := vN + 1;
End Loop;
--·ÃÎÊ
vN := MyTab.First;
For varR In vN..MyTab.count
L
Ïà¹ØÎĵµ£º
SQLServerºÍOracleµÄ³£Óú¯Êý¶Ô±È
¡¡¡¡1.¾ø¶ÔÖµ
¡¡¡¡S:select abs(-1) value
¡¡¡¡O:select abs(-1) value from dual
¡¡¡¡2.È¡Õû(´ó)
¡¡¡¡S:select ceiling(-1.001) value
¡¡¡¡O:select ceil(-1.001) value from dual
¡¡¡¡3.È¡Õû£¨Ð¡£©
¡¡¡¡S:select floor(-1.001) value
¡¡¡¡O:select floor(-1.001) valu ......
1.Ñ¡Ôñ×îÓÐЧÂʵıíÃû˳Ðò(Ö»ÔÚ»ùÓÚ¹æÔòµÄÓÅ»¯Æ÷ÖÐÓÐЧ)¡¡¡¡
¡¡¡¡ SQLSERVERµÄ½âÎöÆ÷°´ÕÕ´ÓÓÒµ½×óµÄ˳Ðò´¦Àífrom×Ó¾äÖеıíÃû£¬Òò´Ëfrom×Ó¾äÖÐдÔÚ×îºóµÄ±í£¨»ù´¡±ídriving table£©½«±»×îÏÈ´¦Àí£¬ÔÚfrom×Ó¾äÖаüº¬¶à¸ö±íµÄÇé¿öÏ£¬±ØÐëÑ¡Ôñ¼Ç¼ÌõÊý×îÉٵıí×÷Ϊ»ù´¡±í£¬µ±SQLSERVER´¦Àí¶à¸ö±íʱ£¬»áÔËÓÃÅÅÐò¼°ºÏ²¢µÄ·½Ê½Á ......
Oracle 10g statisticÊý¾Ýͳ¼Æ,Oracle»á¸ù¾ÝÕâЩͳ¼ÆÐÅÏ¢À´¾ö¶¨ÊÇ×ßRBO(Rule-BasedOptimization)£¬»¹ÊÇ×ßCBO(Cost-BasedOptimization)£¬»áȥѡÔñÄÄÖÖÖ´Ðмƻ®¸ü»®Ëã,Ó°ÏìÊÇ·ñ×ßÏà¹ØµÄË÷ÒýµÈ.Èç¹ûÊÇCBOµÄ»°£¬ËüÒÀ¿¿×¼È·µÄ£¨»òÕß˵±È½Ï׼ȷµÄ£©Í³¼ÆÐÅÏ¢À´²úÉúÓÅ»¯µÄÖ´Ðз¾¶,Èç¹ûûÓÐ×ö¹ýͳ¼Æ£¬CBOÒ²¾ÍûÓÐ×öcostÆÀ¹ÀµÄÒÀ¾Ý ......
NULLÖ¸µÄÊÇ¿ÕÖµ£¬»òÕß·Ç·¨Öµ¡£
NVL (expr1, expr2)->expr1ΪNULL£¬·µ»Øexpr2£»²»ÎªNULL£¬·µ»Øexpr1¡£×¢ÒâÁ½ÕßµÄÀàÐÍÒªÒ»ÖÂ
NVL2 (expr1, expr2, expr3) ->expr1²»ÎªNULL£¬·µ»Øexpr2£»ÎªNULL£¬·µ»Øexpr3¡£expr2ºÍexpr3ÀàÐͲ»Í¬µÄ»°£¬expr3»áת»»Îªexpr2µÄÀàÐÍ
NULLIF (expr1, expr2) ->ÏàµÈ·µ»ØNULL£¬²»µÈ·µ»Øex ......
Ïȹ¹ÔìÒ»¸ö±í:
create table emp2(
id number(2),
name varchar(10),
currdate date,
action varchar2(1)
)
´´½¨´¥·¢Æ÷£º
create or replace trigger d_i_u_emp2
after insert or update or delete on mysort
begin
if inserting then
insert into emp2 values (12,'dog',sysdate,'i');
elsif deleting then ......