1. use database as archive log mode and set archive dest location
alter system set LOG_ARCHIVE_DEST_1 = 'LOCATION=/u04/arch/orcl' scope=spfile;
2. configuration retention days/size/distination
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=43200; --30 days
ALTER SYSTEM SET db_recovery_file_dest_size=10g SCOPE=BOTH;
ALTER SYSTEM SET db_recovery_file_dest='/u04/flash_recovery_area/orcl' SCOPE=BOTH;
3. enalbe database flashback
ALTER DATABASE FLASHBACK ON;
4. create restore pint
CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;
SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE from V$RESTORE_POINT;
DROP RESTORE POINT BEFORE_UPGRADE;
5. do some changes.
6. rollback database to restore point
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO RESTORE POINT 'BEFORE_UPGRADE';
ALTER DATABASE OPEN RESETLOGS;
7. Clear space for flashback database
You can disable Flashback Database with the ALTER DATABASE FLASHBACK OFF ......
Ò»£¬PL/SQL¿éµÄ½á¹¹ºÍ×é³ÉÔªËØ
PL/SQL³ÌÐòÓÉÉùÃ÷²¿·Ö£¬Ö´Ðв¿·Ö£¬Òì³£´¦Àí²¿·ÖÈý¸ö²¿·Ö×é³É¡£½á¹¹ÈçÏ£º
DECLARE
/*ÉùÃ÷²¿·Ö£ºÔÚ´ËÉùÃ÷PL/SQL±äÁ¿£¬ÀàÐͼ°Óα꣬ÒÔ¼°¾Ö²¿µÄ´æ´¢¹ý³ÌºÍº¯Êý*/
BEGIN
/*Ö´Ðв¿·Ö£º¹ý³Ì¼°sqlÓï¾ä£¬³ÌÐòÖ÷Òª²¿·Ö£¬ÊDZØÐëµÄ*/
EXCEPTION
/*Òì³£´¦Àí²¿·Ö£º´íÎó´¦Àí*/
END
PL/SQL¿é·ÖΪÈýÀࣺ
1£¬ ÎÞÃû¿é£º¶¯Ì¬¹¹Ô죬ֻÄÜÖ´ÐÐÒ»´Î¡£
2£¬ ×Ó³ÌÐò£º´æ´¢ÔÚÊý¾Ý¿âÖеĴ洢¹ý³Ì¡¢º¯Êý¼°°üµÈ£¬ÔÚÊý¾Ý¿âÉϽ¨Á¢ºÃÒÔºó¿ÉÒÔÔÚÆäËû³ÌÐòÖе÷ÓÃËüÃÇ¡£
3£¬ ´¥·¢Æ÷£ºÊý¾Ý¿â·¢Éú²Ù×÷ʱ£¬´¥·¢Ê¼þ£¬´Ó¶ø×Ô¶¯Ö´ÐÐÏàÓ¦µÄ³ÌÐò¡£
PL/SQL±êʶ·û£º
PL/SQL³ÌÐòÉè¼ÆÖеıêʶ·û¶¨ÒåÓëSQLµÄ±êʶ·û¶¨ÒåµÄÒªÇóÏàͬ£¬ÒªÇóÈçÏ£º
1£¬ ±êʶ·ûÃû²»Äܳ¬¹ý30¸ö×Ö·û¡£
2£¬ µÚÒ»¸ö×Ö·û±ØÐëΪ×Öĸ¡£
3£¬ ²»·Ö´óСд¡£
4£¬ ²»ÄÜÓüõºÅ£¨-£©¡£
5£¬ ²»ÄÜÊÇSQL±£Áô×Ö¡£
6£¬ ²»Òª°Ñ±äÁ¿ÃûÓë±í×Ö¶ÎÖеÄÃûÒ»Ñù£¬¿ÉÄܵõ½²»ÕýÈ·µÄ½á¹û¡£
±äÁ¿ÃüÃû¹æÔòÈçÏ£º
±êʶ·û£¨±äÁ¿£©
ÃüÃû¹æÔò
ʾÀý
³ÌÐò±äÁ¿
V_name
V_username
³ÌÐò²úÁ¿
C_name
C_username
Óαê±äÁ¿
Name_cursor
Emp_cursor
Òì³£±êʶ
E_name
E_null_exception
±íÀàÐÍ
Name_tabl ......
Ò»£¬PL/SQL¿éµÄ½á¹¹ºÍ×é³ÉÔªËØ
PL/SQL³ÌÐòÓÉÉùÃ÷²¿·Ö£¬Ö´Ðв¿·Ö£¬Òì³£´¦Àí²¿·ÖÈý¸ö²¿·Ö×é³É¡£½á¹¹ÈçÏ£º
DECLARE
/*ÉùÃ÷²¿·Ö£ºÔÚ´ËÉùÃ÷PL/SQL±äÁ¿£¬ÀàÐͼ°Óα꣬ÒÔ¼°¾Ö²¿µÄ´æ´¢¹ý³ÌºÍº¯Êý*/
BEGIN
/*Ö´Ðв¿·Ö£º¹ý³Ì¼°sqlÓï¾ä£¬³ÌÐòÖ÷Òª²¿·Ö£¬ÊDZØÐëµÄ*/
EXCEPTION
/*Òì³£´¦Àí²¿·Ö£º´íÎó´¦Àí*/
END
PL/SQL¿é·ÖΪÈýÀࣺ
1£¬ ÎÞÃû¿é£º¶¯Ì¬¹¹Ô죬ֻÄÜÖ´ÐÐÒ»´Î¡£
2£¬ ×Ó³ÌÐò£º´æ´¢ÔÚÊý¾Ý¿âÖеĴ洢¹ý³Ì¡¢º¯Êý¼°°üµÈ£¬ÔÚÊý¾Ý¿âÉϽ¨Á¢ºÃÒÔºó¿ÉÒÔÔÚÆäËû³ÌÐòÖе÷ÓÃËüÃÇ¡£
3£¬ ´¥·¢Æ÷£ºÊý¾Ý¿â·¢Éú²Ù×÷ʱ£¬´¥·¢Ê¼þ£¬´Ó¶ø×Ô¶¯Ö´ÐÐÏàÓ¦µÄ³ÌÐò¡£
PL/SQL±êʶ·û£º
PL/SQL³ÌÐòÉè¼ÆÖеıêʶ·û¶¨ÒåÓëSQLµÄ±êʶ·û¶¨ÒåµÄÒªÇóÏàͬ£¬ÒªÇóÈçÏ£º
1£¬ ±êʶ·ûÃû²»Äܳ¬¹ý30¸ö×Ö·û¡£
2£¬ µÚÒ»¸ö×Ö·û±ØÐëΪ×Öĸ¡£
3£¬ ²»·Ö´óСд¡£
4£¬ ²»ÄÜÓüõºÅ£¨-£©¡£
5£¬ ²»ÄÜÊÇSQL±£Áô×Ö¡£
6£¬ ²»Òª°Ñ±äÁ¿ÃûÓë±í×Ö¶ÎÖеÄÃûÒ»Ñù£¬¿ÉÄܵõ½²»ÕýÈ·µÄ½á¹û¡£
±äÁ¿ÃüÃû¹æÔòÈçÏ£º
±êʶ·û£¨±äÁ¿£©
ÃüÃû¹æÔò
ʾÀý
³ÌÐò±äÁ¿
V_name
V_username
³ÌÐò²úÁ¿
C_name
C_username
Óαê±äÁ¿
Name_cursor
Emp_cursor
Òì³£±êʶ
E_name
E_null_exception
±íÀàÐÍ
Name_tabl ......
Ò».°´Ó¢ÎÄ×ÖĸÅÅÐò:
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 sc where sno=stu.sno) = 5;
Èý. ÔÚSQLÖÐɾ³ýÖØ¸´¼Ç¼µÄ·½·¨:£¨Óõ½rowid (oracleαÁÐ)£©
1£©Í¨¹ý½¨Á¢ÁÙʱ±íÀ´ÊµÏÖ
SQL>create table temp_emp as (select distinct * from employee)
SQL>truncate table employee; (Çå¿Õemployee±íµÄÊý¾Ý£©
SQL>rename temp_emp to employee; (ÔÙ½«±íÖØÃüÃû£©
2£©Í¨¹ýʹÓÃrowidÀ´ÊµÏÖ¡£
SQL>delete from employee where rowid not in (
select max(t1.rowid) from employee t1 group by
t1.emp_id,t1.emp_name,t1.salary);--ÕâÀïÓÃmin(rowid)Ò²¿ÉÒÔ¡£
ËÄ. TOP NÎÊÌ⣺£¨Óõ½rownum (oracleαÁÐ)£©
--rownumÖ»ÄÜʹÓÃ<=»ò<µÄ¹ØÏµ±È½ÏÔËËã·û
select * from s_emp where row ......
°üÓɰü¹æ·¶ºÍ°üÌåÁ½²¿·Ö×é³É¡£
1¡¢°ü¹æ·¶£¨Package Specification£©
°ü¹æ·¶£¬Ò²½Ð×ö°üÍ·£¬°üº¬ÁËÓйذüµÄÄÚÈݵÄÐÅÏ¢¡£µ«ÊÇ£¬Ëü²»°üº¬Èκιý³ÌµÄ´úÂë¡£
´´½¨°üÍ·µÄÓï·¨Ò»°ãÈçÏÂ
CREATE [OR REPLACE] PACKAGE package_name {IS | AS}
Procedure_name | function_name | variable_declaration | type_definition | exception_declaration | cursor_declaration
END [package_name];
ÉùÃ÷°üÍ·»¹Òª×ñÑһЩÓï·¨¹æÔò£¬ÈçÏ£º
°ü²¿¼þ¿ÉÒÔÒÔÈÎÒâ´ÎÐò³öÏÖ¡£µ«ÊÇ£¬¶ÔÏó±ØÐëÔÚ±»ÒýÓÃ֮ǰ½øÐÐÉùÃ÷¡£
ËùÓÐÀàÐ͵IJ¿¼þ¶¼Ã»ÓбØÒª¶¼±»Ê¹Óá£ÀýÈ磬°ü¿ÉÒÔ½ö°üº¬¹ý³ÌºÍº¯Êý¹æ·¶£¬¶øÃ»ÓÐÉùÃ÷Òì³£´¦Àí»òÀàÐÍ¡£
¶ÔÓÚ¹ý³ÌºÍº¯ÊýµÄËùÓÐÉùÃ÷¶¼±ØÐëÊÇǰÏòÉùÃ÷¡£
2¡¢°üÖ÷Ì壨Package Body£©
°üÖ÷ÌåºÍ°üÍ·´æ´¢ÔÚ²»Í¬µÄÊý¾Ý×ÖµäÖС£Èç¹ûûÓж԰üÍ·½øÐгɹ¦µÄ±àÒ룬¾Í²»¿ÉÄܶ԰üÖ÷Ìå±àÒë³É¹¦¡£Ö÷ÌåÖаüº¬ÁËÔÚ°üÍ·ÖÐǰÏò×Ó³ÌÐòÉùÃ÷ÏàÓ¦µÄ´úÂë¡£
°üÖ÷ÌåÊÇ¿ÉÑ¡µÄ¡£Èç¹û°üÍ·²»°üº¬Èκιý³Ì»òº¯Êý£¬ÄÇô°üÖ÷Ìå¿ÉÒÔûÓС£Õâ¸ö¼¼Êõ¶ÔÓÚÉùÃ÷È«¾Ö±äÁ¿ÊǺÜÓÐÓõģ¬ÒòΪ°üÖеÄËùÓжÔÏóÔÚ°üµÄÍâÃæÊǿɼûµÄ¡£
°üÍ·ÖеÄËùÓÐǰÏòÉùÃ÷±ØÐëÔÚ°üÖ÷ÌåÖб»¸üС ......
°üÓɰü¹æ·¶ºÍ°üÌåÁ½²¿·Ö×é³É¡£
1¡¢°ü¹æ·¶£¨Package Specification£©
°ü¹æ·¶£¬Ò²½Ð×ö°üÍ·£¬°üº¬ÁËÓйذüµÄÄÚÈݵÄÐÅÏ¢¡£µ«ÊÇ£¬Ëü²»°üº¬Èκιý³ÌµÄ´úÂë¡£
´´½¨°üÍ·µÄÓï·¨Ò»°ãÈçÏÂ
CREATE [OR REPLACE] PACKAGE package_name {IS | AS}
Procedure_name | function_name | variable_declaration | type_definition | exception_declaration | cursor_declaration
END [package_name];
ÉùÃ÷°üÍ·»¹Òª×ñÑһЩÓï·¨¹æÔò£¬ÈçÏ£º
°ü²¿¼þ¿ÉÒÔÒÔÈÎÒâ´ÎÐò³öÏÖ¡£µ«ÊÇ£¬¶ÔÏó±ØÐëÔÚ±»ÒýÓÃ֮ǰ½øÐÐÉùÃ÷¡£
ËùÓÐÀàÐ͵IJ¿¼þ¶¼Ã»ÓбØÒª¶¼±»Ê¹Óá£ÀýÈ磬°ü¿ÉÒÔ½ö°üº¬¹ý³ÌºÍº¯Êý¹æ·¶£¬¶øÃ»ÓÐÉùÃ÷Òì³£´¦Àí»òÀàÐÍ¡£
¶ÔÓÚ¹ý³ÌºÍº¯ÊýµÄËùÓÐÉùÃ÷¶¼±ØÐëÊÇǰÏòÉùÃ÷¡£
2¡¢°üÖ÷Ì壨Package Body£©
°üÖ÷ÌåºÍ°üÍ·´æ´¢ÔÚ²»Í¬µÄÊý¾Ý×ÖµäÖС£Èç¹ûûÓж԰üÍ·½øÐгɹ¦µÄ±àÒ룬¾Í²»¿ÉÄܶ԰üÖ÷Ìå±àÒë³É¹¦¡£Ö÷ÌåÖаüº¬ÁËÔÚ°üÍ·ÖÐǰÏò×Ó³ÌÐòÉùÃ÷ÏàÓ¦µÄ´úÂë¡£
°üÖ÷ÌåÊÇ¿ÉÑ¡µÄ¡£Èç¹û°üÍ·²»°üº¬Èκιý³Ì»òº¯Êý£¬ÄÇô°üÖ÷Ìå¿ÉÒÔûÓС£Õâ¸ö¼¼Êõ¶ÔÓÚÉùÃ÷È«¾Ö±äÁ¿ÊǺÜÓÐÓõģ¬ÒòΪ°üÖеÄËùÓжÔÏóÔÚ°üµÄÍâÃæÊǿɼûµÄ¡£
°üÍ·ÖеÄËùÓÐǰÏòÉùÃ÷±ØÐëÔÚ°üÖ÷ÌåÖб»¸üС ......
1¡¢´¥·¢Æ÷µÄ¸ÅÄî
´¥·¢Æ÷Ò²ÊÇÒ»ÖÖ´øÃûµÄPL/SQL¿é¡£´¥·¢Æ÷ÀàËÆÓÚ¹ý³ÌºÍº¯Êý£¬ÒòΪËüÃǶ¼ÊÇÓµÓÐÉùÃ÷¡¢Ö´ÐкÍÒì³£´¦Àí¹ý³ÌµÄ´øÃûPL/SQL¿é¡£Óë°üÀàËÆ£¬´¥·¢Æ÷±ØÐë´æ´¢ÔÚÊý¾Ý¿âÖв¢ÇÒ²»Äܱ»¿é½øÐб¾µØ»¯ÉùÃ÷¡£
¶ÔÓÚ´¥·¢Æ÷¶øÑÔ£¬µ±´¥·¢Ê¼þ·¢ÉúµÄʱºò¾Í»áÏÔʽµØÖ´Ðиô¥·¢Æ÷£¬²¢ÇÒ´¥·¢Æ÷²»½ÓÊܲÎÊý¡£
´´½¨´¥·¢Æ÷µÄÓï·¨ÈçÏÂ
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} triggering_event
[referencing_clause]
[WHEN trigger_condition]
[FOR EACH ROW]
Trigger_body;
ÆäÖÐreferencing_clause×Ó¾äµÄÓÃ;ÊÇͨ¹ýÒ»¸ö²»Í¬µÄÃû³Æ£¬ÒýÓõ±Ç°ÕýÔÚ±»¸üеļǼÐÐÖеÄÊý¾Ý¡£WHEN×Ó¾äÖеÄtrigger_condition—Èç¹û³öÏÖ—¾ÍÓ¦¸ÃÊ×ÏÈÖ´ÐÐÅжϣ¬Ö»Óе±Õâ¸öÌõ¼þÖµÎªÕæµÄʱºò£¬²Å»áÖ´Ðд¥·¢Æ÷µÄÖ÷Ìå´úÂë¡£
2¡¢DML´¥·¢Æ÷µÄ¼¤»î˳Ðò
1£©Ö´ÐÐbeforeÓï¾ä¼¶´¥·¢Æ÷—Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
2£©¶ÔÊܸÃÓï¾äÓ°ÏìµÄÿһÐмǼ
Ö´ÐÐbeforeÐм¶´¥·¢Æ÷—Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
Ö´ÐиÃÓï¾ä±¾Éí
Ö´ÐÐafterÐм¶´¥·¢Æ÷--Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
3£©Ö´ÐÐafterÓï¾ä¼¶´¥·¢Æ÷--Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
......
1¡¢´¥·¢Æ÷µÄ¸ÅÄî
´¥·¢Æ÷Ò²ÊÇÒ»ÖÖ´øÃûµÄPL/SQL¿é¡£´¥·¢Æ÷ÀàËÆÓÚ¹ý³ÌºÍº¯Êý£¬ÒòΪËüÃǶ¼ÊÇÓµÓÐÉùÃ÷¡¢Ö´ÐкÍÒì³£´¦Àí¹ý³ÌµÄ´øÃûPL/SQL¿é¡£Óë°üÀàËÆ£¬´¥·¢Æ÷±ØÐë´æ´¢ÔÚÊý¾Ý¿âÖв¢ÇÒ²»Äܱ»¿é½øÐб¾µØ»¯ÉùÃ÷¡£
¶ÔÓÚ´¥·¢Æ÷¶øÑÔ£¬µ±´¥·¢Ê¼þ·¢ÉúµÄʱºò¾Í»áÏÔʽµØÖ´Ðиô¥·¢Æ÷£¬²¢ÇÒ´¥·¢Æ÷²»½ÓÊܲÎÊý¡£
´´½¨´¥·¢Æ÷µÄÓï·¨ÈçÏÂ
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF} triggering_event
[referencing_clause]
[WHEN trigger_condition]
[FOR EACH ROW]
Trigger_body;
ÆäÖÐreferencing_clause×Ó¾äµÄÓÃ;ÊÇͨ¹ýÒ»¸ö²»Í¬µÄÃû³Æ£¬ÒýÓõ±Ç°ÕýÔÚ±»¸üеļǼÐÐÖеÄÊý¾Ý¡£WHEN×Ó¾äÖеÄtrigger_condition—Èç¹û³öÏÖ—¾ÍÓ¦¸ÃÊ×ÏÈÖ´ÐÐÅжϣ¬Ö»Óе±Õâ¸öÌõ¼þÖµÎªÕæµÄʱºò£¬²Å»áÖ´Ðд¥·¢Æ÷µÄÖ÷Ìå´úÂë¡£
2¡¢DML´¥·¢Æ÷µÄ¼¤»î˳Ðò
1£©Ö´ÐÐbeforeÓï¾ä¼¶´¥·¢Æ÷—Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
2£©¶ÔÊܸÃÓï¾äÓ°ÏìµÄÿһÐмǼ
Ö´ÐÐbeforeÐм¶´¥·¢Æ÷—Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
Ö´ÐиÃÓï¾ä±¾Éí
Ö´ÐÐafterÐм¶´¥·¢Æ÷--Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
3£©Ö´ÐÐafterÓï¾ä¼¶´¥·¢Æ÷--Èç¹û´æÔÚÕâÖÖ´¥·¢Æ÷
......
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¡£µ«ÊÇ¿ÉÒÔÔÚ¶ÔÏóÊ ......
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¡£µ«ÊÇ¿ÉÒÔÔÚ¶ÔÏóÊ ......