24 03, 2008

Strcuts ¿ª·¢¾ÙÀý

Strcuts ¿ª·¢¾ÙÀý

ÔÚJSPÒ³ÃæµÄformÖÐ
<html:form action="/po/poDocument" styleId="poDocumentForm" method="post">
ÆäÖÐstyleId="poDocumentForm"
¶ÔÓ¦Structs-config.xmlÎļþÖеÄ
<form-bean name="poDocumentForm" type="com.pccw.po.standard.PoDocumentForm" />
com.pccw.po.standard.PoDocumentForm ¾ÍÊÇActionFormÀà.
ÆäÖÐaction="/po/poDocument" ÊôÐÔ¶ÔÓ¦µÄ¾ÍÊÇStructs-config.xmlÖеÄaction±êÇ©ÖÐµÄ path="/po/poDocument Ò²¾ÍÊÇÔÚä¯ÀÀÆ÷ÖеÄÊäÈëµÄÖµ.
¶ÔÓ¦µÄÊÇActionÀàÊÇ com.pccw.po.standard.PoDocumentAction

¶ÔÓ¦Structs-config.xmlÖеÄ
<action name="poDocumentForm" type="com.pccw.po.standard.PoDocumentAction" path="/po/poDocument">
<forward name="display_doc_list" path="/elis/po/po_doc_view.jsp" />
<forward name="Add" path="/elis/po/po_doc_frame.jsp" />
<forward name="AddLine" path="/elis/po/req_ship_to.jsp" />
<forward name="ModifyLine" path="/elis/po/req_ship_detail.jsp" />
<forward name="ShowLine" path="/elis/po/po_doc.jsp" />
<forward name="lineList" path="/elis/po/po_doc_detail.jsp" />
</action>
ËùÒÔÔÚActionForm¿ÉÒÔдһЩ¶ÔÓ¦JSPÒ³ÃæÉϵÄÊäÈëÓòµÄÑéÖ¤Âß¼­,µ«ÊÇÖ÷ÒªÂß¼­Ð´ÔÚActionÀàÖÐ


3 02, 2008

DBA³£ÓÃsql

--¼à¿ØË÷ÒýÊÇ·ñʹÓà alter index &index_name monitoring usage; alter index &index_name nomonitoring usage; select * from v$object_usage where index_name = &index_name;

--ÇóÊý¾ÝÎļþµÄI/O·Ö²¼ select df.name,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetim from v$filestat fs,v$dbfile df where fs.file#=df.file# order by df.name;

--Çóij¸öÒþ²Ø²ÎÊýµÄÖµ col ksppinm format a54 col ksppstvl format a54 select ksppinm, ksppstvl from x$ksppi pi, x$ksppcv cv where cv.indx=pi.indx and pi.ksppinm like '_%' escape '' and pi.ksppinm like '%meer%';

--ÇóϵͳÖнϴóµÄlatch select name,sum(gets),sum(misses),sum(sleeps),sum(wait_time) from v$latch_children group by name having sum(gets) > 50 order by 2;

--Çó¹éµµÈÕÖ¾µÄÇл»ÆµÂÊ(Éú²úϵͳ¿ÉÄÜʱ¼ä»áºÜ³¤) select start_recid,start_time,end_recid,end_time,minutes from (select test.*, rownum as rn from (select b.recid start_recid,to_char(b.first_time,'yyyy-mm-dd hh24:mi:ss') start_time, a.recid end_recid,to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss') end_time,round(((a.first_time-b.first_time)*24)*60,2) minutes from v$log_history a,v$log_history b where a.recid=b.recid+1 and b.first_time > sysdate - 1 order by a.first_time desc) test) y where y.rn < 30

--Ç󻨹ö¶ÎÕýÔÚ´¦ÀíµÄÊÂÎñ select a.name,b.xacts,c.sid,c.serial#,d.sql_text from v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction e where a.usn=b.usn and b.usn=e.xidusn and c.taddr=e.addr and c.sql_address=d.address and c.sql_hash_value=d.hash_value order by a.name,c.sid,d.piece;

--Çó³öÎÞЧµÄ¶ÔÏó select 'alter procedure '||object_name||' compile;' from dba_objects where status='INVALID' and wner='&' and object_type in ('PACKAGE','PACKAGE BODY'); / select owner,object_name,object_type,status from dba_objects where status='INVALID';

--Çóprocess/sessionµÄ״̬ select p.pid,p.spid,s.program,s.sid,s.serial# from v$process p,v$session s where s.paddr=p.addr;

--Çóµ±Ç°sessionµÄ״̬ select sn.name,ms.value from v$mystat ms,v$statname sn where ms.statistic#=sn.statistic# and ms.value > 0;

--Çó±íµÄË÷ÒýÐÅÏ¢ select ui.table_name,ui.index_name from user_indexes ui,user_ind_columns uic where ui.table_name=uic.table_name and ui.index_name=uic.index_name and ui.table_name like '&table_name%' and uic.column_name='&column_name';

--ÏÔʾ±íµÄÍâ¼üÐÅÏ¢ col search_condition format a54 select table_name,constraint_name from user_constraints where constraint_type ='R' and constraint_name in (select constraint_name from user_cons_columns where column_name='&1'); select rpad(child.table_name,25,' ') child_tablename, rpad(cp.column_name,17,' ') referring_column,rpad(parent.table_name,25,' ') parent_tablename, rpad(pc.column_name,15,' ') referred_column,rpad(child.constraint_name,25,' ') constraint_name from user_constraints child,user_constraints parent, user_cons_columns cp,user_cons_columns pc where child.constraint_type = 'R' and child.r_constraint_name = parent.constraint_name and child.constraint_name = cp.constraint_name and parent.constraint_name = pc.constraint_name and cp.position = pc.position and child.table_name ='&table_name' order by child.owner,child.table_name,child.constraint_name,cp.position;

--ÏÔʾ±íµÄ·ÖÇø¼°×Ó·ÖÇø(user_tab_subpartitions) col table_name format a16 col partition_name format a16 col high_value format a81 select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='&table_name'

--ʹÓÃdbms_xplanÉú³ÉÒ»¸öÖ´Ðмƻ® explain plan set statement_id = '&sql_id' for &sql; select * from table(dbms_xplan.display);

--Çóij¸öÊÂÎñµÄÖØ×öÐÅÏ¢(bytes) select s.name,m.value from v$mystat m,v$statname s where m.statistic#=s.statistic# and s.name like '%redo size%';

--ÇócacheÖлº´æ³¬¹ýÆä5%µÄ¶ÔÏó select o.owner,o.object_type,o.object_name,count(b.objd) from v$bh b,dba_objects o where b.objd = o.object_id group by o.owner,o.object_type,o.object_name having count(b.objd) > (select to_number(value)*0.05 from v$parameter where name = 'db_block_buffers');

--ÇóË­×èÈûÁËij¸ösession(10g) select sid, username, event, blocking_session, seconds_in_wait, wait_time from v$session where state in ('WAITING') and wait_class != 'Idle';

--ÇósessionµÄOS½ø³ÌID col program format a54 select p.spid "OS Thread", b.name "Name-User", s.program from v$process p, v$session s, v$bgprocess b where p.addr = s.paddr and p.addr = b.paddr UNION ALL select p.spid "OS Thread", s.username "Name-User", s.program from v$process p, v$session s where p.addr = s.paddr and s.username is not null;

--²é»á»°µÄ×èÈû col user_name format a32 select /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name, o.owner,o.object_name,s.sid,s.serial# from v$locked_object l,dba_objects o,v$session s where l.object_id=o.object_id and l.session_id=s.sid order by o.object_id,xidusn desc ;

select /*+ rule */ s.username, decode(l.type,'tm','table lock', 'tx','row lock', null) lock_level, o.owner,o.object_name,s.sid,s.serial# from v$session s,v$lock l,dba_objects o where l.sid = s.sid and l.id1 = o.object_id(+) and s.username is not null ;

--ÇóµÈ´ýµÄʼþ¼°»á»°ÐÅÏ¢/Çó»á»°µÄµÈ´ý¼°»á»°ÐÅÏ¢ select se.sid,s.username,se.event,se.total_waits,se.time_waited,se.average_wait from v$session s,v$session_event se where s.username is not null and se.sid=s.sid and s.status='ACTIVE' and se.event not like '%SQL*Net%' order by s.username; select s.sid,s.username,sw.event,sw.wait_time,sw.state,sw.seconds_in_wait from v$session s,v$session_wait sw where s.username is not null and sw.sid=s.sid and sw.event not like '%SQL*Net%' order by s.username; -

-Çó»á»°µÈ´ýµÄfile_id/block_id col event format a24 col p1text format a12 col p2text format a12 col p3text format a12 select sid,event,p1text, p1, p2text, p2, p3text, p3 from v$session_wait where event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%' order by event; select name,wait_time from v$latch l where exists (select 1 from (select sid,event,p1text, p1, p2text, p2, p3text, p3 from v$session_wait where event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%' ) x where x.p1= l.latch#);

--Çó»á»°µÈ´ýµÄ¶ÔÏó col owner format a18 col segment_name format a32 col segment_type format a32 select owner,segment_name,segment_type from dba_extents where file_id = &file_id and &block_id between block_id and block_id + blocks - 1;

--Çóbuffer cacheÖеĿéÐÅÏ¢ select o.OBJECT_TYPE, substr(o.OBJECT_NAME,1,10) objname , b.objd , b.status, count(b.objd) from v$bh b, dba_objects o where b.objd = o.data_object_id and o.owner = '&1' group by o.object_type, o.object_name,b.objd, b.status ;

--ÇóÈÕÖ¾ÎļþµÄ¿Õ¼äʹÓà select le.leseq current_log_sequence#, 100*cp.cpodr_bno/le.lesiz percentage_full from x$kcccp cp,x$kccle le where le.leseq =cp.cpodr_seq;

--ÇóµÈ´ýÖеĶÔÏó select /*+rule */ s.sid, s.username, w.event, o.owner, o.segment_name, o.segment_type, o.partition_name, w.seconds_in_wait seconds, w.state from v$session_wait w, v$session s, dba_extents o where w.event in (select name from v$event_name where parameter1 = 'file#' and parameter2 = 'block#' and name not like 'control%') and o.owner <> 'sys' and w.sid = s.sid and w.p1 = o.file_id and w.p2 >= o.block_id and w.p2 < o.block_id + o.blocks

--Çóµ±Ç°ÊÂÎñµÄÖØ×ö³ß´ç select value from v$mystat, v$statname where v$mystat.statistic# = v$statname.statistic# and v$statname.name = 'redo size';

--»½ÐÑsmonÈ¥Çå³ýÁÙʱ¶Î column pid new_value Smon set termout off select p.pid from sys.v_$bgprocess b,sys.v_$process p where b.name = 'SMON' and p.addr = b.paddr / set termout on oradebug wakeup &Smon undefine Smon

--Çó»ØÍËÂÊ select b.value/(a.value + b.value),a.value,b.value from v$sysstat a,v$sysstat b where a.statistic#=4 and b.statistic#=5;

--ÇóDISK READ½Ï¶àµÄSQL select st.sql_text from v$sql s,v$sqltext st where s.address=st.address and s.hash_value=st.hash_value and s.disk_reads > 300;

--ÇóDISK SORTÑÏÖØµÄSQL select sess.username, sql.sql_text, sort1.blocks from v$session sess, v$sqlarea sql, v$sort_usage sort1 where sess.serial# = sort1.session_num and sort1.sqladdr = sql.address and sort1.sqlhash = sql.hash_value and sort1.blocks > 200;

--Çó¶ÔÏóµÄ´´½¨´úÂë column column_name format a36 column sql_text format a99 select dbms_metadata.get_ddl('TABLE','&1') from dual; select dbms_metadata.get_ddl('INDEX','&1') from dual;

--Çó±íµÄË÷Òý set linesize 131 select a.index_name,a.column_name,b.status, b.index_type from user_ind_columns a,user_indexes b where a.index_name=b.index_name and a.table_name='&1';

ÇóË÷ÒýÖÐÐÐÊý½Ï¶àµÄ select index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where num_rows > 10000 and blevel > 0 select table_name,index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where status <> 'VALID'

--Çóµ±Ç°»á»°µÄSID£¬SERIAL# select sid, serial# from v$session where audsid = SYS_CONTEXT('USERENV','SESSIONID');

--Çó±í¿Õ¼äµÄδÓÿռä col mbytes format 9999.9999 select tablespace_name,sum(bytes)/1024/1024 mbytes from dba_free_space group by tablespace_name;

--Çó±íÖж¨ÒåµÄ´¥·¢Æ÷ select table_name,index_type,index_name,uniqueness from user_indexes where table_name='&1'; select trigger_name from user_triggers where table_name='&1';

--Çó䶨ÒåË÷ÒýµÄ±í select table_name from user_tables where table_name not in (select table_name from user_ind_columns);

--Ö´Ðг£ÓõĹý³Ì exec print_sql('select count(*) from tab'); exec show_space2('table_name'); --Çófree memory select * from v$sgastat where name='free memory'; select a.name,sum(b.value) from v$statname a,v$sesstat b where a.statistic# = b.statistic# group by a.name;

²é¿´Ò»ÏÂË­ÔÚʹÓÃÄǸö¿ÉÒԵûعö¶Î£¬»òÕ߲鿴һÏÂij¸ö¿ÉÒÔµÃÓû§ÔÚʹÓûعö¶Î£¬ ÕÒ³öÁì»Ø¹ö¶Î²»¶ÏÔö³¤µÄÊÂÎñ£¬ÔÙ¿´¿´ÈçºÎ´¦ÀíËü£¬ÊÇ·ñ¿ÉÒÔ½«Ëücommit£¬ÔÙ²»ÐÐ ¾Í¿´¿´ÄÜ·ñkillËü£¬µÈµÈ,²é¿´µ±Ç°ÕýÔÚʹÓõĻعö¶ÎµÄÓû§ÐÅÏ¢ºÍ»Ø¹ö¶ÎÐÅÏ¢: set linesize 121 SELECT r.name "ROLLBACK SEGMENT NAME ",l.sid "ORACLE PID",p.spid "SYSTEM PID ",s.username "ORACLE USERNAME" FROM v$lock l, v$process p, v$rollname r, v$session s WHERE l.sid = p.pid(+) AND s.sid=l.sid AND TRUNC(l.id1(+)/65536) = r.usn AND l.type(+) = 'TX' AND l.lmode(+) = 6 ORDER BY r.name;

--²é¿´Óû§µÄ»Ø¹ö¶ÎµÄÐÅÏ¢ select s.username, rn.name from v$session s, v$transaction t, v$rollstat r, v$rollname rn where s.saddr = t.ses_addr and t.xidusn = r.usn and r.usn = rn.usn

--Éú³ÉÖ´Ðмƻ® explain plan set statement_id='a1' for &1;

--²é¿´Ö´Ðмƻ® select lpad(' ',2*(level-1))||operation operation,options,OBJECT_NAME,position from plan_table start with id=0 and statement_id='a1' connect by prior id=parent_id and statement_id='a1'

--²é¿´ÄÚ´æÖдæµÄʹÓà select decode(greatest(class,10),10,decode(class,1,'Data',2,'Sort',4,'Header',to_char(class)),'Rollback') "Class", sum(decode(bitand(flag,1),1,0,1)) "Not Dirty",sum(decode(bitand(flag,1),1,1,0)) "Dirty", sum(dirty_queue) "On Dirty",count(*) "Total" from x$bh group by decode(greatest(class,10),10,decode(class,1,'Data',2,'Sort',4,'Header',to_char(class)),'Rollback');

--²é¿´±í¿Õ¼ä״̬ select tablespace_name,extent_management,segment_space_management from dba_tablespaces; select table_name,freelists,freelist_groups from user_tables;

--²é¿´ÏµÍ³ÇëÇóÇé¿ö SELECT DECODE (name, 'summed dirty write queue length', value)/ DECODE (name, 'write requests', value) "Write Request Length" FROM v$sysstat WHERE name IN ( 'summed dirty queue length', 'write requests') and value>0;

--¼ÆËãdata bufferÃüÖÐÂÊ select a.value + b.value "logical_reads", c.value "phys_reads", round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO" from v$sysstat a, v$sysstat b, v$sysstat c where a.statistic# = 40 and b.statistic# = 41 and c.statistic# = 42; SELECT name, (1-(physical_reads/(db_block_gets+consistent_gets)))*100 H_RATIO FROM v$buffer_pool_statistics;

--²é¿´ÄÚ´æÊ¹ÓÃÇé¿ö select least(max(b.value)/(1024*1024),sum(a.bytes)/(1024*1024)) shared_pool_used, max(b.value)/(1024*1024) shared_pool_size,greatest(max(b.value)/(1024*1024),sum(a.bytes)/(1024*1024))- (sum(a.bytes)/(1024*1024)) shared_pool_avail,((sum(a.bytes)/(1024*1024))/(max(b.value)/(1024*1024)))*100 avail_pool_pct from v$sgastat a, v$parameter b where (a.pool='shared pool' and a.name not in ('free memory')) and b.name='shared_pool_size';

--²é¿´Óû§Ê¹ÓÃÄÚ´æÇé¿ö select username, sum(sharable_mem), sum(persistent_mem), sum(runtime_mem) from sys.v_$sqlarea a, dba_users b where a.parsing_user_id = b.user_id group by username;

--²é¿´¶ÔÏóµÄ»º´æÇé¿ö select OWNER,NAMESPACE,TYPE,NAME,SHARABLE_MEM,LOADS,EXECUTIONS,LOCKS,PINS,KEPT from v$db_object_cache where type not in ('NOT LOADED','NON-EXISTENT','VIEW','TABLE','SEQUENCE') and executions>0 and loads>1 and kept='NO' order by owner,namespace,type,executions desc; select type,count(*) from v$db_object_cache group by type;

--²é¿´¿â»º´æÃüÖÐÂÊ select namespace,gets, gethitratio*100 gethitratio,pins,pinhitratio*100 pinhitratio,RELOADS,INVALIDATIONS from v$librarycache

--²é¿´Ä³Ð©Óû§µÄhash select a.username, count(b.hash_value) total_hash,count(b.hash_value)-count(unique(b.hash_value)) same_hash, (count(unique(b.hash_value))/count(b.hash_value))*100 u_hash_ratio from dba_users a, v$sqlarea b where a.user_id=b.parsing_user_id group by a.username;

--²é¿´×ÖµäÃüÖÐÂÊ select (sum(getmisses)/sum(gets)) ratio from v$rowcache;

--²é¿´undo¶ÎµÄʹÓÃÇé¿ö SELECT d.segment_name,extents,optsize,shrinks,aveshrink,aveactive,d.status FROM v$rollname n,v$rollstat s,dba_rollback_segs d WHERE d.segment_id=n.usn(+) and d.segment_id=s.usn(+);

--ÎÞЧµÄ¶ÔÏó select owner,object_type,object_name from dba_objects where status='INVALID'; select constraint_name,table_name from dba_constraints where status='INVALID';

--Çó³öij¸ö½ø³Ì£¬²¢¶ÔËü½øÐиú×Ù select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr and p.spid=&1; exec dbms_system.SET_SQL_TRACE_IN_SESSION(&1,&2,true); exec dbms_system.SET_SQL_TRACE_IN_SESSION(&1,&2,false);

--Çó³öËø¶¨µÄ¶ÔÏó select do.object_name,session_id,process,locked_mode from v$locked_object lo, dba_objects do where lo.object_id=do.object_id;

--Çóµ±Ç°sessionµÄ¸ú×ÙÎļþ SELECT p1.value || '/' || p2.value || '_ora_' || p.spid || '.ora' filename FROM v$process p, v$session s, v$parameter p1, v$parameter p2 WHERE p1.name = 'user_dump_dest' AND p2.name = 'instance_name' AND p.addr = s.paddr AND s.audsid = USERENV('SESSIONID') AND p.background is null AND instr(p.program,'CJQ') = 0;

--Çó¶ÔÏóËùÔÚµÄÎļþ¼°¿éºÅ select segment_name,header_file,header_block from dba_segments where segment_name like '&1';

--Çó¶ÔÏó·¢ÉúÊÂÎñʱ»ØÍ˶μ°¿éºÅ select a.segment_name,a.header_file,a.header_block from dba_segments a,dba_rollback_segs b where a.segment_name=b.segment_name and b.segment_id='&1'

--9iµÄÔÚÏßÖØ¶¨Òå±í /*Èç¹ûÔÚÏßÖØ¶¨ÒåµÄ±íûÓÐÖ÷¼üÐèÒª´´½¨Ö÷¼ü*/ exec dbms_redefinition.can_redef_table('cybercafe','announcement'); create table anno2 as select * from announcement exec dbms_redefinition.start_redef_table('cybercafe','announcement','anno2'); exec dbms_redefinition.sync_interim_table('cybercafe','announcement','anno2'); exec dbms_redefinition.finish_redef_table('cybercafe','announcement','anno2'); drop table anno2 exec dbms_redefinition.abort_redef_table('cybercafe','announcement','anno2'); --³£ÓõÄlogmnr½Å±¾(cybercafe) exec sys.dbms_logmnr_d.build(dictionary_filename =>'esal',dictionary_location =>'/home/oracle/logmnr'); exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_24050.dbf', ptions=>sys.dbms_logmnr.new); exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22912.dbf', ptions=>sys.dbms_logmnr.addfile); exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22913.dbf', ptions=>sys.dbms_logmnr.addfile); exec sys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22914.dbf', ptions=>sys.dbms_logmnr.addfile); exec sys.dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/esal.ora'); create table logmnr2 as select * from v$logmnr_contents; -

-ÓëȨÏÞÏà¹ØµÄ×Öµä ALL_COL_PRIVS±íʾÁÐÉϵÄÊÚȨ£¬Óû§ºÍPUBLICÊDZ»ÊÚÓèÕß ALL_COL_PRIVS_MADE±íʾÁÐÉϵÄÊÚȨ£¬Óû§ÊÇÊôÖ÷ºÍ±»ÊÚÓèÕß ALL_COL_RECD±íʾÁÐÉϵÄÊÚȨ£¬Óû§ºÍPUBLICÊDZ»ÊÚÓèÕß ALL_TAB_PRIVS±íʾ¶ÔÏóÉϵÄÊÚȨ£¬Óû§ÊÇPUBLIC»ò±»ÊÚÓèÕß»òÓû§ÊÇÊôÖ÷ ALL_TAB_PRIVS_MADE±íʾ¶ÔÏóÉϵÄȨÏÞ£¬Óû§ÊÇÊôÖ÷»òÊÚÓèÕß ALL_TAB_PRIVS_RECD±íʾ¶ÔÏóÉϵÄȨÏÞ,Óû§ÊÇPUBLIC»ò±»ÊÚÓèÕß DBA_COL_PRIVSÊý¾Ý¿âÁÐÉϵÄËùÓÐÊÚȨ DBA_ROLE_PRIVSÏÔʾÒÑÊÚÓèÓû§»òÆäËû½ÇÉ«µÄ½ÇÉ« DBA_SYS_PRIVSÒÑÊÚÓèÓû§»ò½ÇÉ«µÄϵͳȨÏÞ DBA_TAB_PRIVSÊý¾Ý¿â¶ÔÏóÉϵÄËùÓÐȨÏÞ ROLE_ROLE_PRIVSÏÔʾÒÑÊÚÓèÓû§µÄ½ÇÉ« ROLE_SYS_PRIVSÏÔʾͨ¹ý½ÇÉ«ÊÚÓèÓû§µÄϵͳȨÏÞ ROLE_TAB_PRIVSÏÔʾͨ¹ý½ÇÉ«ÊÚÓèÓû§µÄ¶ÔÏóȨÏÞ SESSION_PRIVSÏÔʾÓû§ÏÖÔÚ¿ÉÀûÓõÄËùÓÐϵͳȨÏÞ USER_COL_PRIVSÏÔʾÁÐÉϵÄȨÏÞ£¬Óû§ÊÇÊôÖ÷¡¢ÊÚÓèÕß»ò±»ÊÚÓèÕß USER_COL_PRIVS_MADEÏÔʾÁÐÉÏÒÑÊÚÓèµÄȨÏÞ£¬Óû§ÊÇÊôÖ÷»òÊÚÓèÕß USER_COL_PRIVS_RECDÏÔʾÁÐÉÏÒÑÊÚÓèµÄȨÏÞ£¬Óû§ÊÇÊôÖ÷»ò±»ÊÚÓèÕß USER_ROLE_PRIVSÏÔʾÒÑÊÚÓè¸øÓû§µÄËùÓнÇÉ« USER_SYS_PRIVSÏÔʾÒÑÊÚÓè¸øÓû§µÄËùÓÐϵͳȨÏÞ USER_TAB_PRIVSÏÔʾÒÑÊÚÓè¸øÓû§µÄËùÓжÔÏóȨÏÞ USER_TAB_PRIVS_MADEÏÔʾÒÑÊÚÓè¸øÆäËûÓû§µÄ¶ÔÏóȨÏÞ£¬Óû§ÊÇÊôÖ÷ USER_TAB_PRIVS_RECDÏÔʾÒÑÊÚÓè¸øÆäËûÓû§µÄ¶ÔÏóȨÏÞ£¬Óû§ÊDZ»ÊÚÓèÕß --ÈçºÎÓÃdbms_stats·ÖÎö±í¼°Ä£Ê½£¿ exec dbms_stats.gather_schema_stats(ownname=>'&USER_NAME',estimate_percent=>dbms_stats.auto_sample_size, method_opt => 'for all columns size auto',degree=> DBMS_STATS.DEFAULT_DEGREE); exec dbms_stats.gather_schema_stats(ownname=>'&USER_NAME',estimate_percent=>dbms_stats.auto_sample_size,cascade=>true); /* FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause] FOR COLUMNS [size clause] column|attribute [size_clause] [,column|attribute [size_clause]...], where size_clause is defined as size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY} integer--Number of histogram buckets. Must be in the range [1,254]. REPEAT--Collects histograms only on the columns that already have histograms. AUTO--Oracle determines the columns to collect histograms based on data distribution and the workload of the columns. SKEWONLY--Oracle determines the columns to collect histograms based on the data distribution of the columns */


2 01, 2008

´íÎóÐÞ¸Äɾ³ýÊý¾ÝºóµÄ»Ö¸´·½·¨

Oracle ERPά»¤ÈËÔ±¹¤×÷ÔÙСÐÄÒ²ÄÑÃâ»áÓÐÔÚÕýʽ¿âÖÐÎóɾ»òÕßÎó¸ÄÊý¾Ý²¢ÇÒÒѾ­commitµÄÇé¿ö·¢Éú£¬ÄÇôÎÒ¾ÍÒªÓõ½ - Oracle9iÖеÄFlashBack¹¦ÄÜ,»òÐíºÜ¶àͬÊÂÃǶ¼ÔÚÓÃ,ÏÂÃæÎÒ̸̸ÎÒÔÚʹÓÃÖеķ½·¨ºÍһЩ¸ÐÏë:
¾ßÌå·½·¨ÈçÏ >>
1. ÎÒÃÇ¿ÉÒÔʹÓÃ
SELECT item_cost FROM cst_item_costs
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour)
WHERE organization_id = 1
AND yyyymm = 200712
AND item_number = '6384BLCCSL';
À´²é¿´1¸öСʱǰµÄÊý¾Ý.
* ÕâÀïÐèҪ˵Ã÷¼¸µã:
a. AS OF TIMESTAMP expr ÊÇSELECTÓï¾äÖеÄFLASHBACK×Ó¾ä
b. SYSTIMESTAMP ÊÇϵͳÌṩµÄʱ¼äº¯Êý,¾«È·¶È¿ÉÒԴﵽ΢Ãë¼¶,²¢Ìṩµ±Ç°Ê±Çø
eg. select SYSTIMESTAMP from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
29-DEC-07 11.16.08.112686 AM +09:00
c. INTERVAL µÄ×÷ÓÃÊÇÓÃÀ´Ö¸¶¨Ê±¼äÇø¼ä,ÏÂÃæÊÇËü²ÎÓëÔËËãµÄ·¨Ôò
Operand1 Operator Operand2 Result Type
-------------------------------------------------------
Datetime - Interval Datetime

ÎÒÃÇ¿ÉÒÔͨ¹ýÐÞ¸Äʱ¼äµ¥Î»ºÍÊýÁ¿À´¸Ä±äµ¹ÍËʱ¼ä
eg. TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' day) --²éѯһÌìǰµÄÊý¾Ý
TIMESTAMP (SYSTIMESTAMP - INTERVAL '10' minute ) --²éѯʮ·ÖÖÓǰµÄÊý¾Ý
TIMESTAMP (SYSTIMESTAMP - INTERVAL '50' second ) --²éѯ50ÃëǰµÄÊý¾Ý
d. ¹ØÓÚÔÚFlashBackÖеĿɻØË·Ê±¼ä
OracleÖÐÓÐÁ½¸ö²ÎÊýÄܹ»¾ö¶¨¿É»ØË·Ê±¼ä >>
undo ±í¿Õ¼ä´óС ºÍ undo_retention ³õʼ»¯²ÎÊý.
Ò»°ãµÄERPÕýʽϵͳÀïÃæµÄ undo tablespace Ϊ 20G×óÓÒ, undo_retentionÉèÖÃΪ 3600S.
ÒµÎñ·±Ã¦Ê±¼ä×î´ó¿É»ØË·Ê±¼äԼΪ 2-3h£¬·ÇÒµÎñʱ¼äΪ4-5h£¬ÕâÀïÐèҪעÒâ: ×î´ó¿É»ØË·Ê±¼äÊÇÓÉ
undo±í¿Õ¼ä´óС¼°Êý¾Ý¿âÊý¾Ý±ä¸üµÄƵ·±³Ì¶ÈÀ´¾ö¶¨µÄ.
Èç¹û³¬¹ý×î´ó¿É»ØË·Ê±¼äʱ,ϵͳ»á¸ø³öÓÐÃûµÄ ORA-01555 ¿ìÕÕÌ«ÀÏ(Snapshot too old)´íÎó.
e. ×öFlashBack±ØÐëÒªÓÐ FlashBack Any Table µÄϵͳȨÏÞ.

2. ÄÇôÒÀ´ËÀàÍÆ,ÎÒÃǾͿÉÒÔÀûÓÃFlashBackÀ´»Ö¸´Ä³¶Îʱ¼äǰµÄÊý¾ÝÁË
UPDATE cst_item_costs SET item_cost =
(SELECT item_cost FROM cst_item_costs
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' hour)
WHERE organization_id = 1
AND yyyymm = 200712
AND item_number = '6384BLCCSL)
WHERE organization_id = 1
AND yyyymm = 200712
AND item_number = '6384BLCCSL';
* ÕâÀïҲҪ˵Ã÷¼¸µã:
a. ÔÚ»Ö¸´Êý¾Ýǰ,Òª¼ì²éWHEREÌõ¼þÊÇ·ñ¾ßÓÐΨһÐÔ
b. Èç¹ûÒª³ÉÅú»Ö¸´»òÈ«±í»Ö¸´Êý¾ÝµÄ»°,Òª¼ì²éÊÇ·ñÔÚÖ¸¶¨µÄʱ¼äÇø¼äÄÚ»¹ÓÐÆäËû»á»°Ð´ÈëµÄÊý¾Ý

19 12, 2007

Mozilla Firefoxä¯ÀÀÆ÷µÇ½Oracle EBS 11i ·½·¨

ÓÃMozilla Firefoxä¯ÀÀÆ÷µÇ½Oracle EBS 11i (Oracleµç×ÓÉÌÎñÌ×¼þ)µÄ·½·¨.

½ñÌì×°Á˸öMozilla Firefoxä¯ÀÀÆ÷£¬¹¤×÷ÐèÒª¾­³£µÇ½Oracle EBS 11i (Oracleµç×ÓÉÌÎñÌ×¼þ)£¬µ«·¢ÏÖʹÓÃMozilla Firefoxä¯ÀÀÆ÷²»Äܵǽ¡£¼¸·­ÖÜÕÛ×ÜËã½â¾öÁË£¬·½·¨ÈçÏ£º

1.ÕÒµ½Oracle EBS 11i (Oracleµç×ÓÉÌÎñÌ×¼þ)¿Í»§¶Ë²å¼þµÄ°´×°Ä¿Â¼¡£ÎÒµÄĿ¼Ϊ£º¡°C:Program FilesOracleJInitiator 1.3.1.21bin¡±

2.ÔÚbinĿ¼ÏÂÕÒµ½¡°NPJinit13121.dll¡±ÎļþCOPYµ½Mozilla Firefoxä¯ÀÀÆ÷°²×°Ä¿Â¼µÄ¡°plugins¡±Îļþ¼ÐÏ¡£
ÎÊÌâ½â¾ö

23 11, 2007

ÔÚFORMÈçºÎÖ±½Ó´ðÓ¦±¨±í

1.±¨±íÖ±½Óд³ÉHtml¸ñʽ.

2.È»ºóÔÚϵͳWeb PL/SQLÀïÃæ×¢²á³ÌÐò.

3.ÔÚformµÄ°´Å¥ÀïÃæÌí¼ÓÈçÏ´úÂë.

v_command := fnd_profile.VALUE ('APPS_WEB_AGENT');
v_command := v_command || '/CPOORDIMP_PRN_PKG.POIMP_PRN?p_IMPORT_REQUEST_ID=' || :QPO_HEADER.IMPORT_REQUEST_ID;


22 11, 2007

OAF ÈçºÎ·¢²¼ÄãµÄ¸öÐÔ»¯Îļþ

ÈçºÎ·¢²¼ÄãµÄOAFµÄ¸öÐÔ»¯Îļþ,ʵ¼ÊÉÏOracleÌṩÁËÁ½¸ö±È½ÏÓÐÓõŤ¾ß:XMLExporterºÍXMLImporter,µ«Êǵ¼ÈëµÄʱºòµÄ¸öÐÔ»¯µÄ·¾¶ºÜÄÑÕÒµ½.ÏÂÃæÊÇÎÒ×Ô¼º·¢ÏÖµÄÒ»¸ö·½·¨.¾ÙÀý:

1.ÎÒ°ÑhellowordµÄÒ³Ãæ¸öÐÔ»¯ÁË,¸öÐÔ»¯ÔÚ×éÖ¯²ã,°Ñ±êÇ©µÄprompt¸Ä³ÉÁËcehshi

2. SELECT * FROM jdr_paths
WHERE path_name LIKE '%HelloWorldPG%'


3.SELECT jdr_mds_internal.getDocumentName(44515)
FROM dual

44515ÊÇÉÏÃæSQLµÄ·µ»Ø½á¹û,µ±È»ÉÏÃæµÄSQL»á·µ»Ø¶à¸ö¹û,µ«ÊǸù¾ÝÄãµÄ¸öÐÔ»°,¸ù¾Ýʵ¼Ê¾Í¿ÉÒԵõ½±È½Ï׼ȷµÄ·¾¶.

ʵ¼ÊÉϸöÐÔ»¯´æ·ÅµÄĿ¼ÊÇÓÐÒ»¶¨¹æÔòµÄ.Ò»°ãÈç¹ûÄãÄÜÕÒµ½Ô­ÎļþµÄ»¯,ÄãµÄ¸öÐÔ»¯µÄ´æ·ÅĿ¼¾ÍºÜÈÝÒ×ÕÒµ½:¹æÔòÈçÏÂ:

+ <component>
+ webui
file1.xml
+ customizations
+ <layer type>
+ <layer value>
file2.xml

file1¾ÍÊÇÔ­Îļþ,file2¾ÍÊǸöÐÔ»°Îļþ.Öм仹ÓÐlayer type ºÍvalueÕâÁ½¸öĿ¼µÄ¹æÔòÈçÏÂ:

LevelLevel Value
FunctionFunction Code
Site0
OrganizationOrganization ID
ResponsibilityResponsibility ID
UserUser ID

½áºÏÎÒµÄÀý×ӾͿÉÒÔÖªµÀÕâ¸öĿ¼½á¹¹,ÎÒÊÇÔÚorg²ã×÷µÄ¸öÐÔ»¯.

org/82

4.telnet È»ºócdµ½ $JAVA_TOP

5.java oracle.jrad.tools.xml.exporter.XMLExporter /oracle/apps/fnd/framework/toolbox/tutorial/webui/customizations/org/82/HelloWorldPG -rootdir $JAVA_TOP/cmcc -username apps -password js818super -dbconnection "(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(Host=10.32.153.44)(PORT = 11501))(CONNECT_DATA = (SID = JSSIT)))"
×¢ÒâÉÏÃæµÄÓï¾ä²»ÒªÓлسµ.

6.ÏÂÃæÊÇÎÒµ¼³öÀ´µÄXMLµÄÎļþ:

<?xml version = '1.0' encoding = 'UTF-8'?>
<customization xmlns="http://xmlns.oracle.com/jrad" version="9.0.5.4.89_555" xml:lang="en-US" customizes="/oracle/apps/fnd/framework/toolbox/tutorial/webui/HelloWorldPG" package="/oracle/apps/fnd/framework/toolbox/tutorial/webui/customizations/org/82">
<modifications>
<modify element="HelloName" prompt="cehshi"/>
</modifications>
</customization>
ÕâÒ»¿´ÉÏÃæµÄpromptµÄÖµ,¾ÍÊÇÎҸĵÄ.

7.È»ºó¾ÍÊÇimportÕâ¸ö¾Í²»ÔÚ˵ÁË,¹ý³ÌºÍexportÒ»Ñù.

¶à˵һÏÂ,OAFµÄ¶àÓïÑԵĸöÐÔ»¯ÊÇÒªÔÚlayer value²ãÔٶཨһ¸öÓïÑÔĿ¼ÏÂÃæÓï¾ä.

1.µ½´¦Ô­À´µÄXML:

java oracle.jrad.tools.xml.exporter.XMLExporter /oracle/apps/
  fnd/wf/worklist/webui/customizations/site/0/
  AdvancWorklistRG
  -rootdir $APPL_TOP/admin/patch 
  -username APPSNAME 
  -password APPSPWD 
  -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
     (HOST=yourhost)(PORT=yourport))(CONNECT_DATA=
     (SID=yoursid)))"

2.Éú³ÉUSÓïÑԵİ汾,ÕâÒ»²½ÊDZØÐëµÄ,ËùÒԵķ­Òë¶¼ÐèÒªÓÃUS°æ×ö»ù´¡.Õâ¸ö¾Í·ÅÔÚÁËUSÎļþ¼ÐÏÂÃæÁË.

java oracle.jrad.tools.trans.extractor.XLIFFExtractor 
  $APPL_TOP/admin/patch/oracle/apps/fnd/wf/worklist/
  webui/customizations/site/0/AdvancWorklistRG.xml 
  mmd_dir=$OA_HTML/jrad 
  root=$APPL_TOP/admin/patch 
  xliff_dir=$APPL_TOP/admin/patch/oracle/apps/fnd/wf/
    worklist/webui/customizations/site/0/US/
3.È»ºó°ÑUSÎļþ¼ÐÏÂÃæµÄ.xlf Îļþ¿½±´µ½ÄãµÄÐèÒª·­ÒëµÄĿ¼Èç:ZHS
cp $APPL_TOP/admin/patch/oracle/apps/fnd/wf/worklist/
  webui/customizations/site/0/US/AdvancWorklistRG.xlf $APPL_TOP/
  admin/patch/oracle/apps/fnd/wf/worklist/webui/
  customizations/site/0/ZHS/AdvancWorklistRG.xlf 
4.ÐÞ¸ÄÕâ¸öxlfÎļþ. ÒªÐÞ¸Ä:
target-language="en-US"ºÍ <target>Payment Terms</target> 
Ö±½ÓµÄ,Ö±½Ó¸Ä³ÉÖÐÎĵÄÃû³Æ
<?xml version = '1.0' encoding = 'UTF-8'?> 
<xliff version="1.0">
<file datatype="jdr" original="PayTermsLOVRN" product-version="$Header: PayTermsLOVRN.xlf 115.1 2003/02/26 19:58:26 jfrost noship $" source-language= "en-US" target-language="en-US" product-name="qp">
<body>
<trans-unit id=".oracle.apps.qp.lov.webui. PayTermsLOVRN..PTName...prompt" translate="yes" maxbytes="4000" maxwidth="26" size-unit="char">
<source>Payment Terms</source>
<target>Payment Terms</target>
<prop-group name="ora_untranslatable">
<prop prop-type="tagName">messageStyledText </prop>
<prop prop-type="attributeName">prompt</prop>
</prop-group>
</trans-unit>
<trans-unit id=".oracle.apps.qp.lov.webui. PayTermsLOVRN..TermId...prompt" translate="yes" maxbytes="4000" maxwidth="14" size-unit="char">
<source>Term Id</source>
<target>Term Id</target>
<prop-group name="ora_untranslatable">
<prop prop-type="tagName">formValue</prop>
<prop prop-type="attributeName">prompt</prop>
</prop-group>
</trans-unit>
</body>
</file>
</xliff>

16 11, 2007

OAF ºÍ FormsµÄ¼¸µã±È½Ï

½üÆÚ¼¸ÌìÑо¿ÁËÒ»ÏÂOAFµÄ¿ª·¢,Õâ¸öÊÇoracleÐû³ÆµÄм¼Êõ,µ«ÊÇʵÔÚÊǾõµÃ²»ÔõôÑù,ËùÒÔ×ܽáÒ»¸öOAF²»ÈçFormsµÄµØ·½.

1.¿ª·¢ÓïÑÔ

OAFÖÚËùÖÜÖªÊÇÓÃJavaÀ´¿ª·¢µÄ,²»¿É·ñÈÏJavaÔÚÓïÑÔ·½Ãæ¾ßÓкܴóµÄÏȽøÐÔ,¿ÉÒÔ˵Êǵ½Ä¿Ç°ÎªÖ¹×îΪÁ÷ÐеÄÒ»ÖÖÓïÑÔ.¶øformÔòÊDzÉÓÃPL/SQL.µ¥¶À´ÓÓïÑÔµÄÏȽøÐÔÀ´¿´Pl/SQL¿Ï¶¨²»ÈçJava.µ«ÊÇÎÒÃDz»ÒªÍüÁË,ÎÒÃÇÓÃOAFÀ´×ö¿ª·¢Ê²Ã´¶«Î÷.ÊÇOracle ERPµÄ¶þ´Î¿ª·¢,Ò²¾ÍÊÇÔÚOracle ERPµÄ»ù´¡ÉÏÓÃoracle database×÷ΪÊý¾Ý½øÐÐÆóÒµ¹ÜÀíµÄÈí¼þ¿ª·¢.¾ÍÊÇÕâ¸ö»ù´¡¾ö¶¨ÁË,ÎÒÃDZØÐëÒªÓõ½PL/SQL.ºÜÄÑÏëÏóÄãÄÜÓÃOAF×öoracle ERP¿ª·¢¶øÍêÈ«²»ÓÃPL/SQL.ÕâÑùÖ»ÄÜ˵Ã÷ҪôÄãÊÇÌì²Å,ҪôÄãÊÇ´Àµ°. ÕâÑù¾Íµ¼ÖÂÁËOAF¿ª·¢ÐèÒª»áÁ½ÖÖÓïÑÔJavaºÍPL/SQL,Õâ¾Í´ó´óµÄÔö¼ÓÁË¿ª·¢ÈËÔ±µÄÒªÇó,µ±È»Ò²ÒªÌá¸ßÆóÒµµÄ¿ª·¢³É±¾.

2.·¢²¼µÄ·½·¨

ÎÒ¾õµÃÕâ¸ö²»Óöི,AOF¿ª·¢µÄÒ³Ãæ·¢²¼·±ÔӵĺÜ,Ê×ÏÈÒª¶ÔÓ¦ºÃĿ¼,È»ºó°ÑÔÓÆßÔӰ˵ÄClassÉÏ´«µ½·þÎñÆ÷ÉÏ,»¹Óаѵ¼ÈëXML,¶ÔÓ¦µÄJAVAÀàµÄ·¾¶,×ÜÖ®ÊÇÁ½×ÖÀ´¸ÅÀ¨:ÔÓÂÒ.¶øformûÓÐÕâ¸öÎÊÌâ,¾ÍÊÇÒ»¸öfmbÎļþ,ÔÚ·þÎñÆ÷ÉϱàÒëÒÔºó³ÉΪһ¸öfmx.±È½Ï¼òµ¥·½±ã.

3.½çÃæ

Ê×ÏÈ˵˵formµÄ½çÃæ°É.×ܵÄÀ´Ëµform¸øÈ˵ĵÚÒ»Ó¡Ïó¾ÍÊÇÒ»¸ö×Ö:³ó.×¢ÒâÎÒÕâÀï˵µÄÊǵÚÒ»Ó¡Ïó,µÚÒ»Ó¡ÏóÒÔºóÄØ,·´¶ø»á¾õµÃ»¹¿ÉÒÔ,ÊôÓÚÄÍ¿´Ð͵Ä.ÆäʵÎÒÃÇ˵µÄ½çÃæµÄºÃ²î²¢²»ÊÇÖ¸½çÃæµÄÃÀ³ó,ÕâÀﻹ°üº¬Á˺ܴóÒ»¸öÒòËØ:ÈËÐÔ»¯.Ò²¾ÍÊÇÓÃÆðÀ´·½²»·½±ã.oracleµÄformsÎÒ¾õµÃÒòΪËü¼¼Êõ¹¹¼Ü¾ö¶¨ÁË,¿Ï¶¨±ÈÍøÒ³·½Ê½ÔÚ½çÃæÀ´µÄÈËÐÔ»¯.ÕâÀïÉæ¼°C/S±È½ÏB/S¹¹¼ÜµÄ×î´óµÄÒ»¸öÓŵã,¿ª·¢ÈËÔ±¶¼Á˽â,ÎҾͲ»¶àÉÙ˵.ËùÒÔÎÒ¾õµÃÈí¼þÊÇÒ»ÖÖ¹¤¾ß¾ÍÏñ½£¿ÍÊÖÀïµÄ½£,ËüÊǸ¨ÖúÈËÀàÍê³É¹¤×÷µÄ,¾ÍºÃÏñ½£ÊÇÓÃÀ´»÷µ¹¶ÔÊÖµÄ,Ò»°ÑÏâÂúÁ˱¦Ê¯µÄ½£²»Ò»¶¨Êǽ£¿Í¾õµÃ×îºÃÓõĽ£.

OAFµÄ½çÃæ,ºÇºÇÕâ¸ö½çÃæÓеã¸ãЦ,¼Ì³ÐÁËoralceÈí¼þµÄÒ»¹á´«Í³,»¹ÊǺÜÄǸö×Ö:³ó.µ«ÊÇoracleºÃÏñ¶ÔËûÃǵĽçÃæ»¹ÊÇÏ൱µÄ×ÔÐÅ,²»½¨ÒéÓû§ÔÚ¿ª·¢ÖÐʹÓÃ×Ô¼º±àдHTML,ºÍJavascript.ÉÏÊöÕâÁ½ÏîÊÇÎÒÃǸÄÉÆB/S½á¹¹½çÃæµÄ±È½ÏÖ÷Ҫ;¾¶.ÖÁÓÚʵÓÃÐÔ,ÎÒÕæµÄºÜÄÑÏëÏóËû±ÈForms½çÃæÌá¸ßÁ˶àÉÙ.¶øÇҺܶàÔÚformsÖкÜÈÝÒ׿ØÖƵĶ«Î÷,µ½ÁËOAFºöÈ»±äµÄºÜÄÑ.ËüÓеÄform¶¼ÓÐ,formÓеÄËü²»Ò»¶¨ÓÐ.¾Í±ÈÈç×ö¸öºÜ¼òµ¥µÄ¹¦ÄÜ:°ÑageÕâ¸öÁÐÊýÖµ>50µÄ¼Í¼ÓÃÀ¶É«×ÖÌåÏÔʾ.

4.ÖØÓÃÐÔ

̸µ½Õâ¸ö¿ÉÊÇËµÖØÓÃÐÔJAVAµÈÃæÏò¶ÔÏóÓïÑÔµÄÒ»¸ö×î´óµÄÓÅÊÆ.µÄÈ·OAF¿ÉÒÔ°ÑÒ»¸öÒ³Ãæ·Ö³ÉºÃ¶à¸öClassÈ»ºó¿ÉÒԺܷ½±ãµÄimport,ºÍextend.Õâ¸ö¶Ô´óÐ͵ÄÏîÄ¿¿ª·¢ÕæµÄÊÇÓкܴóµÄºÃ´¦.formµÄÖØÓþÍûÓа취ÕâôÁé»îÁË.µ«ÊǸù¾ÝÎҵĿª·¢¾­ÑéÎÒ,ÎÒºÜÉÙ´ÓTempleteÖ±½Ó¿ªÊ¼½¨forms,ÎÒÏÈÕÒÒ»¸ö½çÃæÉϹ¦Äܲ¶àformÖ±½Ó¸Ä.¶øÇÒÊý¾Ý¿âµÄ¿ª·¢¹é¼¯µ½×î¸ù±¾µÄ¼¸¸ö²Ù×÷¾ÍÊDzéѯ,Ìí¼Ó,ɾ³ý,ºÍ¸ü¸Ä.ËùÒÔÎÒ¾õµÃ¿ÉÒÔÖØÓõϹÊÇÂù¶àµÄ.

5.³ÌÐòÉè¼Æ

µ«ÊÇÎÒÕâÀï˵µÄÊÇOracle ERPµÄ¶þ´Î¿ª·¢µÄ³ÌÐòÉè¼Æ,Èç¹û¿ª·¢ÆäËû³ÌÐò,ÎÒ¾õµÃÕâÁ½¸öÕâ¸ö¶¼²»ºÃ.ÎÒ¾õµÃOracle ERP¿ª·¢ÓÐÒ»¸ö×î´óµÄÌØµã¾ÍÊÇÔ­ÐÍÐÔ¿ª·¢,¾ÍÊÇ˵ºÜ¶àʱºò,Óû§ÊÇÔÚ·¢ÏÖÔ­À´±ê×¼µÄ½çÃæ²»ºÃʹ,»òÕß²»·ûºÏµ±Ç°Êµ¼ÊÒµÎñÁË,Ìá³öÐèÇó,È»ºó¸ü¸Ä,ËùÒÔÕâЩÐèÇóÓÐʱºòºÜ¾ßÌå,ºÜÏÖʵ,ºÜÈÝÒ×°ÑÎÕ.ËùÒÔÃæÏò¶ÔÏóµÄÉè¼Æ·½·¨ÓÐʱºòÔÚÕâÀïÕæµÄÏÔµÃÓеã´ó²ÅСÓÃÁË.¶øformsÄØ,¿ÉÒÔ˵ÓÃÕâ¸ö¶«Î÷¿ª·¢´óÐÍÏîÄ¿ÕæµÄ²»ºÃʹ,µ«ÊÇ×ö¶þ´Î¿ª·¢¿ÉÒÔ.·´¶øÔÚÓÐЩʱºòÒª±ÈOAF¸ü¼ÓµÄʵÓÃ.

²»¹ÜÔõÑùOAF±Ï¾¹ÊÇм¼Êõ,Ëû»¹ÐèÒªºÜ³¤µÄʱ¼äÀ´ÍêÉÆ.»¹ÓкܶàµÄ¹¦ÄÜÖµµÃÆÚ´ý.


15 11, 2007

OAF ÖÐÔõÑùÉèÖö¯Ì¬µÄ²éѯ

ÔÚOAFµÄ¿ª·¢ÖÐ,¶¯Ì¬²éѯÊDZÜÃâ²»Á˵Ä,¾ÍÊǸù¾ÝÓû§ÊäÈëµÄÌõ¼þÀ´²éѯ,µ±È»OAFÖÐÓÐºÜ¶à·½ÃæµÄ·½·¨,µ«ÊÇÓÐÒ»ÖÖ·½·¨ÊÇÓõÄ×îΪÆÕ±éµÄ.

1.ÔÚcontrolerÖеÄprocessRequest µÄ·½·¨Öе÷ÓÃ

am.invokeMethod("initDetails", parameters);

µ±È»Òªµ÷ÓÃinvokeMethod·½·¨ÏÈÒªOAApplicationModule am = pageContext.getApplicationModule(webBean);À´ÊµÀý»¯am.

initDetailsÊÇдÔÚAMµÄjava ÎļþµÄÖеÄÒ»¸ö·½·¨,parameters¿ÉÒÔÓÃpageContext.getParameters ·½·¨µÃµ½ÄãÏëÒªµÄÈκβÎÊý.

2.ÔÚAMµÄjavaÎļþÖÐдһ¸öinitDetails·½·¨º¯Êý,À´µ÷ÓÃVOÖеķ½·¨.Èç:initQuery(String XXXX);

3.ÔÚVOÖÐÌí¼ÓÏÂÃæµÄ´úÂë,Õâ¸ö´úÂëÊÇ´ÓOAFµÄUGÀïÃæÄóöÀ´µÄ,ÎÒ¾õµÃÕâ¶Î´úÂë±È½ÏµÄ¾­µä,ÒÔºóÔÚ¿ª·¢Öл᲻¶ÏµÄÓõ½.

Õâ¶Î´úÂëÖ±½ÓÔËÐеĻ°ÒªÔ­À´µÄ»ù´¡ÉÏÒªimportÒ»¸öÀà:

import java.util.Vector

Initialize and execute the query
public void initQuery(String name, String onHold, String number)
{

StringBuffer whereClause = new StringBuffer(100);
Vector parameters = new Vector(3);
int clauseCount = 0;
int bindCount = 0;

setWhereClauseParams(null); // Always reset

   if ((name != null) && (!("".equals(name.trim()))))
   {
     whereClause.append(" NAME like :");
     whereClause.append(++bindCount);
     parameters.addElement(name + "%");
     clauseCount++;
   }
   if ((number != null) && (!(""Equals(number.trim()))))
   {
   
     Number supplierId = null;
   
     // SUPPLIER_ID is a NUMBER; datatypes should always
     // match, and the parameter passed to this method is a
     // String.
     try
     {
       supplierId = new Number(number);
     } 
     catch(Exception e) {}
   
     if (clauseCount > 0)
     {
       whereClause.append(" AND "); 
     }
   
     whereClause.append(" SUPPLIER_ID = :");
     whereClause.append(++bindCount);
     parameters.addElement(supplierId);
     clauseCount++;
   }
   if ((onHold != null) && (!(""Equals(onHold.trim()))))
   {
     if (clauseCount > 0)
     {
       whereClause.append(" AND "); 
     }
   
     whereClause.append(" ON_HOLD_FLAG = :");
     whereClause.append(++bindCount);
     parameters.addElement("Y"); 
     clauseCount++;
   }
   setWhereClause(whereClause.toString());
   if (bindCount > 0) 
   {
     Object[] params = new Object[bindCount];
   
     // the copyInto() is 1.1.8 compliant which, as of 4/02/03, is required by ARU
   
     parameters.copyInto(params); 
     setWhereClauseParams(params);
  }
   
  executeQuery();
 } // end initQuery( )

Genterate an Application Module Interface

If you want to generate an application module interface

so you can invoke typed methods directly

(with compile-time checking) instead of calling

invokeMethod(), you must first create the methods

that you want to expose to the client. Then:

  1. In the JDeveloper Navigator, select the application module
  2. that you just created, right-click and select Edit <appmodule_name>....
  3. In the Application Module Wizard, select Client Methods.
  4. Select the methods you want to be able to invoke remotely in the
  5. Available list and shuttle them to the Selected list.
  6. Select OK to create your interface.

13 11, 2007

BlockµÄÊý¾ÝÔ´ÊÇViewµÄ ÈçºÎ²Ù×÷Êý¾Ý

ǰ¼¸ÌìÓиöÅóÓÑÎÊÆðÕâ¸öÎÊÌâ,¸ÕºÃÎÒÔÚÒÔǰͬʵÄblogÖп´µ½ÕâÎÄÕÂ,ÏÂÃæµÄÄÚÈÝÊÇתµÄ,²»ÊDZ¾À´Ð´µÄ:

BlockµÄÊý¾ÝÔ´ÊÇViewµÄ£¬Èç¹ûÏë²Ù×÷Êý¾Ý£¬ÐèҪעÒâÔÚÒÔϼ¸¸öTriggerÀïÃæÐ´´úÂ룺

On-lock:

select INVENTORY_ITEM_ID into :XX_UPDATE_CATEGORY_V.INVENTORY_ITEM_ID
from XX_UPDATE_CATEGORY_DETAIL
where rowid = :XX_UPDATE_CATEGORY_V.row_id
for update of INVENTORY_ITEM_ID;

on-insert:

DECLARE
L_USER_ID NUMBER;
BEGIN
L_USER_ID:=TO_NUMBER(FND_PROFILE.VALUE('USER_ID'));
insert into xxuts.xx_update_category_detail

values

END;

on-update:

update xxuts.xx_update_category_detail
set

where
ROWID=:XX_UPDATE_CATEGORY_V.ROW_ID
;

on-delete:

DELETE FROM xx_update_category_detail WHERE ROWID=:XX_UPDATE_CATEGORY_V.ROW_ID;


13 11, 2007

ÈçºÎ°ÑÊý¾ÝÉÏ´«µ½EBSµÄformsµÄÊý¾Ý¿éÖÐ

1. ǰ¼¸Ìì×öÁËÒ»¸ö°ÑÎļþÉÏ´«µ½formµÄÊäÈëÓòÖеijÌÐò,ÕâÀï°Ñ²½Öè¼òµ¥µÄдһÏÂ,¸½ÉϹؼüµÄÔ´´úÂë.ÒÔ¹©²Î¿¼.

1.´´½¨Ò»¸öÁÙʱ±í: XXX_TEMP_FILES

½¨±íÓï¾äÊÇ:

CREATE TABLE XXX_TEMP_FILES (
FILE_ID
NUMBER,
SEQ
NUMBER,
TEXT
VARCHAR2(2000),
CREATION_DATE
DATE
)

´´½¨Õâ¸ö±íµÄÄ¿µÄ¾ÍÊÇÒª°ÑÊý¾Ý´ÓFND_LOBSÕâ¸ö±íµÄfile_dataÕâ¸ö×ֶεÄÊý¾Ý,ͨ¹ý³ÌÐò,ÒòΪÕâ¸ö±íµÄÕâ¸öÊý¾ÝÊÇlobsÀàÐ͵Ä,ËùÒÔÕû¸öÎļþ¶¼·ÅÔÚÕâ¸ö×Ö¶ÎÀï,ÎÒÃÇÀûÓÃÕâ¸öÁÙʱ±í,°ÑÊý¾ÝÎļþ²ð³ÉÒ»ÐÐÒ»¸ö¼Í¼.È»ºóÿÐÐÔÚ¸ù¾Ý·Ö¸ö·û²é·Ö.

2. ´´½¨ÉÏ´«°ü: XXX_FILE_IO

XXX_FILE_IO °üº¬Èý¸ö×Ó³ÌÐò:
INS_TEMP_FILES:´Ófnd_lobs ±íÖÐÈ¡ÉÏ´«µÄÊý¾Ý,°ÑËü°´ÐÐÀ´²ð·Ö,²¢²åÈëµ½:
XXX_TEMP_FILES ±íÖÐ
SEL_TEMP_FILES:´ÓXXX_TEMP_FILES ÖаÑÊý¾ÝÈ¥³ö
DEL_TEMP_FILES:Êý¾ÝÒѾ­ÉÏ´«µ½FormµÄ½çÃæÖÐ,ÐèҪɾ³ýÎļþ.

Ö÷ÒªÓï¾ä¾ÍÊÇ:

PROCEDURE INS_TEMP_FILES(p_file_id IN NUMBER) IS
w_integer INTEGER;
w_blob BLOB;

w_raw RAW(10);
w_buff VARCHAR2(30000);
w_line VARCHAR2(30000);
w_len INTEGER;
eofsw BOOLEAN := FALSE;
offset INTEGER;
w_b_len NUMBER := 0;
w_num NUMBER;
w_seq NUMBER := 0;

BEGIN
SELECT file_data INTO w_blob FROM fnd_lobs WHERE file_id = p_file_id;

offset := 1;
LOOP
EXIT WHEN eofsw;
w_seq := w_seq + 1;
w_raw := utl_raw.cast_to_raw(chr(10));
w_num := dbms_lob.instr(w_blob, w_raw, offset, 1);
w_len := w_num - w_b_len;
w_b_len := w_num;

IF w_num = 0
THEN
w_len := 20000;
eofsw := TRUE;
END IF;

BEGIN
DBMS_LOB.READ(w_blob, w_len, offset, w_buff);
EXCEPTION
WHEN no_data_found THEN
EXIT;
WHEN OTHERS THEN
RAISE;
END;

w_line := utl_raw.cast_to_varchar2(w_buff);

SELECT REPLACE(w_line, chr(10), NULL) INTO w_line FROM dual;
SELECT REPLACE(w_line, chr(13), NULL) INTO w_line FROM dual;

INSERT INTO XXX_TEMP_FILES
(FILE_ID, SEQ, TEXT, CREATION_DATE)
VALUES
(p_file_id, w_seq, w_line, SYSDATE);

offset := offset + w_len;
END LOOP;

END;
3. ÔÚFormÎļþÖеÄProgram UnitÖн¡Ò»¸ö°ü.XXX_UPLOAD
Õâ¸öÎļþ×îºÃ×ö³ÉPLL,ºÍÆäËû¿ÍÖÆ»¯µÄÓÐÓõijÌÐòÒ»Æð´ò°ü,ÉÏ´«µ½formÕâÊÇÒ»¸öϵͳ±È½ÏÓÐÓõÄͨÓõijÌÐò.
Ö÷ÒªÊÇÀûÓÃFND_GFMÕâ¸öͨÓÃÉÏ´«µÄ¹¤¾ß,°ÑÎļþ´«µ½,FND_LOBSÖÐÈ¥,È»ºóµÚ¶þ²½½¨ºÃµÄµÄ°ü,½øÐÐÊý¾Ý²ð·Ö:

p_file_id := NULL;
access_id := FND_GFM.AUTHORIZE(NULL);

FND_PROFILE.GET('APPS_WEB_AGENT', l_server_url);
l_url := rtrim(l_server_url, '/') ||
'/fnd_file_upload.displayGFMform?access_id=' ||
to_char(access_id) ||
chr(38) ||
'l_server_url=' ||
l_server_url;

if (l_url is NULL) then
raise form_trigger_failure;
return NULL;
end if;

FND_UTILITIES.OPEN_URL(l_url);

FND_MESSAGE.SET_NAME('FND', 'ATCHMT-FILE-UPLOAD-COMPLETE');

button_choice := FND_MESSAGE.QUESTION(
button1 => 'YES',
button2 => null,
button3 => 'NO',
default_btn => 1,
cancel_btn => 3,
icon => 'question'
);

if button_choice = 1 then


p_file_id := FND_GFM.GET_FILE_ID(access_id);

XXX_FILE_IO.INS_TEMP_FILES(p_file_id);
-- pcm_dbms_lob.UPOPEN(p_file_id);

else

return NULL;

end if;


return p_file_id;

1. ÔÚFormÎļþÖеÄProgram UnitÖн¡Ò»¸ö³ÌÐòÈç: UPLOAD_XXX_XXX(X¸ù¾Ýʵ¼ÊÐèҪת»»)

UPLOAD_XXX_XXX Õâ¸öÎļþµÄÐèÒªÔÚʵ¼ÊµÄÓ¦ÓÃÖÐ×÷¸Ä¶¯,¸ù¾øÊµ¼ÊµÄÒªµ¼ÈëµÄ×Ö¶ÎÐ޸ijÌÐò.Ö÷Òª¹¦ÄܾÍÊÇ´ÓXXX_TEMP_FILES°ÑÊý¾Ý¶Á³ö,È»ºó¸ù¾Ý·Ö¸î·ûÀ´,°Ñÿ¸öÊý¾Ý¶ÔÓ¦µ½formµÄÓòÖÐ.


13 11, 2007

ÈçºÎ×¢²á SSWA jsp º¯Êý µÄÒ³Ãæ

ÔÚ¹¦ÄÜ×¢²áÕâÀïÑ¡ÔñSSWA jsp º¯Êý ,È»ºó°ÑJspµÄÒ³Ãæµ½/app/jssit/jssitcomn/html Ŀ¼ÖÐ,Õâ¸öÄ¿Â¼Ëæ¸÷¸ö»·¾³²»Í¬Ò²²»Ò»¶¨Ïàͬ,µ«ÊǺÍ$JAVA_TOP(/app/jssit/jssitcomn/java)Õâ¸öĿ¼ֻÓÐ×îºÃºóÒ»¸öĿ¼²»Í¬.

Ò²¿ÉÒÔÔÚ/app/jssit/jssitcomn/html Ŀ¼ÏÂ×Ô¼º½¨Á¢Ò»¸öxxxµÄÎļþ¼Ð,µ«ÊÇÕâ¸öÔÚ¹¦ÄÜ×¢²áÕâÀï HTMLµ÷Óà ÓòÒªÊäÈë xxx/xxx.jsp,Ç°Ãæ¼ÓÉÏ×Ô¼º½¨Á¢µÄĿ¼·¾¶¾Í¿ÉÒÔÁË.

ʵ¼ÊÉÏOAFµÄ¿ª·¢Ò²ÊÇÒªÓà SSWA jsp º¯Êý Õâ¸öÀàÐÍÀ´×¢²á,ËùÓÐOAFµÄ³ÌÐò¶¼ÒªÓÉOA.jspÕâ¸öÒ³Ãæ×÷ΪÈë¿Ú.ËùÒÔÔÚ HTMLµÄµ÷ÓÃÖÐÐèÒªÊäÈë:OA.jsp?page=/oracle/apps/fnd/framework/toolbox/tutorial/webui/HelloWorldPG

?ºóÃæµÄ¾ÍÊÇOAÕâ¸öÒ³ÃæÒªµ÷ÓõIJÎÊý,ʵ¼ÊÉϾÍÊǸæËßϵͳÄãµÄHelloWorldPG.xmlÕâ¸öÎļþµÄ·¾¶,Ö÷ÒâϵͳÀïÃæ²»ÐèÒª¼ÓÉÏxml.


30 10, 2007

OAF ÅäÖ÷½·¨

ÏÂÔØjdev 9.03.5´øOracle Applications ExtensionÀ©Õ¹°ü£¡£¨ÒÔϼò³Æ jdev)(login Metalink and search the patch number 4573517)

½âѹÖÁijĿ¼£¨ÎÒÊÇd:javajdev_oaf)£¨×¢ÒâĿ¼Öв»Òª´øÓпոñ£¡£©
½âѹºóµÄĿ¼½á¹¹ÊÇ
jdevbin jdevµÄÖ´ÐгÌÐòËùÔÚĿ¼
jdevdoc ¿ª·¢Îĵµ
jdevhome oaf¹¤×÷Ŀ¼

ÅäÖò½Ö裺
1£© Ìî¼Ó»·¾³±äÁ¿ JDEV_USER_HOME
Ö¸Ïòd:javajdev_oafjdevhomejdev
2)ÅäÖÃÊý¾Ý¿âÅäÖÃÎļþ£¬·ÅÔÚ
ÕâÊÇÒ»¸ö.dbcÎļþ,ÔÚoracle ebs°²×°Ä¿Â¼ÖÐÕÒ(/u02/prod/inst/apps/PROD_ebs/appl/fnd/12.0.0/secure/PROD.dbc)
Ò²¿ÉÒÔÔÚhttp://yourserveraddress:8000/OA_HTML/jsp/fnd/aoljtest.jspÕâÀïÃæÕÒ£¬½øÈëTESTÒ³Ãæ£¬connnection TestÖеÄlocate bdc File¾ÍÊÇ,ÄÚÈÝÈçÏ£º
#DB Settings
#Wed Jul 12 11:19:03 CST 2006
GUEST_USER_PWD=GUEST/ORACLE
APPL_SERVER_ID=21352B7FD1D64869B9E073D0BF9C66AB17555619151894333175138346880731
FND_JDBC_BUFFER_DECAY_INTERVAL=300
APPS_JDBC_DRIVER_TYPE=THIN
FND_JDBC_BUFFER_MIN=1
DB_NAME=VIS
GWYUID=APPLSYSPUB/PUB
FND_JDBC_BUFFER_MAX=5
APPS_JDBC_URL=jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=EBS.ebsserver.com)(PORT=1521)))(CONNECT_DATA=(SID=VIS)))
FND_JDBC_STMT_CACHE_FREE_MEM=TRUE
FND_JDBC_STMT_CACHE_SIZE=0
TWO_TASK=VIS
FND_MAX_JDBC_CONNECTIONS=500
FND_JDBC_USABLE_CHECK=false
FNDNAM=APPS
FND_JDBC_PLSQL_RESET=false
DB_PORT=1521
FND_JDBC_CONTEXT_CHECK=true
FND_JDBC_BUFFER_DECAY_SIZE=5
DB_HOST=ebs.ebsserver.com


d:javajdev_oafjdevhomejdevmyhtmlOA_HTMLsecureĿ¼ÖÐ
×¢Ò⣬ÉÏÃæµÄÅäÖÃÎļþÖУ¬ÓÐÒ»ÃûҪעÊ͵ô£¬²»È»ÓдíÎó£¬ÍøÉÏÓÐÈË˵ÕâÊÇÒ»¸öBUG£¬ÒªÏÂÔØ²¹¶¡²ÅÄܽâ¾ö£¬ÎÒûÓÐȨÏÞÏÂÔØ²¹¶¡£¬×¢µô°É£¬¾ÍÊÇÕâ¾ä£¬Ç°Ãæ¼ÓÉÏ#¼´¿É
APPS_JDBC_URL=jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=EBS.ebsserver.com)(PORT=1521)))(CONNECT_DATA=(SID=VIS)))

3£©´´½¨¿ì½Ý·½Ê½
Ö¸Ïòd:javajdev_oafdevbinjdevw.exe
´ËΪjdevµÄÆô¶¯ÃüÁ
4£©ÔÚoracle ebsÅäÖÃÏÂÃæÁ½¸öÖ°Ôð ¸øÄãµÄ¿ª·¢Óû§£¡Ò»°ãÊÇÔÚapplication short name (AK)ÖеÄÖ°Ôð
OA Framework ToolBox Tutorial (responsibility key is FWK_TBX_TUTORIAL)
OA Framework ToolBox Tutorial Labs (responsibility key is FWK_TOOLBOX_TUTORIAL_LABS)
5£©ÅäÖÃÊý¾Ý¿âÁ¬½Ó
´ò¿ªD:javajdev_oafjdevhomejdevmyprojectsÏÂÃæµÄtoolbox.jws¹¤×÷¿Õ¼ä£¨À©Õ¹ÃûjwsΪjdevµÄworkspaceÎļþ£©
ÔÚtoolbox.jwsÖУ¬ÕÒµ½Tutorial.jpr£¨À©Õ¹ÃûjprΪjdevµÄÏîÄ¿Îļþ£©Õâ¸öÏîÄ¿,ÓÒ¼ü£¬´ò¿ªproject setingÕâ¸öÃüÁÔÚ³öÏֵĶԻ°¿òÖУ¬Ñ¡ÔñOracle Applications ½ÚµãÏ Runtime Connection.

connectionÉèÖÃΪÉÏÃæµÄdbcÎļþ
username /passwordÓëµÚËIJ½Öè±£³ÖÒ»ÖÂ
Ö°Ôð±£³ÖĬÈÏ¡£

ͬÑùÉèÖÃLabSolutions.jprÕâ¸öÏîÄ¿
ÅäÖÃÊý¾Ý¿âÁ¬½Ó£¬ÔÚÓëNavigatorÖУ¬Ñ¡ÔñConnectionsÏÂÃæDataBase½Úµã£¬Ìî¼ÓÊý¾Ý¿âÁ¬½Ó£¡

ÅäÖÃ
Tutorial.jprÏîÄ¿ºÍLabSolutions.jprÏîÄ¿µÄproject settingÖеÄconnectÑ¡ÏîµÄConnection NameΪÄã¸Õ¸ÕÅäÖõÄÊý¾Ý¿âÁ¬½ÓÃû

ÓÐÒ»¸ö ±È½ÏºÃµÄOAFµÄÍøÕ¾:http://oracle.anilpassi.com/oa-framework-tutorials-training.html


29 10, 2007

PL/SQLÖж¯Ì¬µôÓô洢¹ý³Ì

PL/SQLÖж¯Ì¬µôÓô洢¹ý³Ì£º

SQL> set serverout on

SQL> create or replace procedure p_test(a in varchar2,b in varchar2,c out varchar2)
2 is
3 begin
4 c := a||b;
5 end p_test;
6 /

Procedure created

SQL> declare
2 v_sql varchar2(1000);
3 c varchar2(1000);
4 begin
5 v_sql:='begin p_test(:v1,:v2,:v3); end;';
6 execute immediate v_sql using in '1',in '2',out c;
7 dbms_output.put_line(c);
8 end;
9 /

12

PL/SQL procedure successfully completed


29 10, 2007

shellÈëÃÅ»ù´¡

shellÈëÃÅ»ù´¡
1.½¨Á¢ºÍÔËÐÐshell³ÌÐò
ʲôÊÇshell³ÌÐòÄØ? ¼òµ¥µÄ˵shell³ÌÐò¾ÍÊÇÒ»¸ö°üº¬Èô¸ÉÐÐ
shell»òÕßlinuxÃüÁîµÄÎļþ.
Ïó±àд¸ß¼¶ÓïÑԵijÌÐòÒ»Ñù,±àдһ¸öshell³ÌÐòÐèÒªÒ»¸öÎı¾±à¼­Æ÷.ÈçVIµÈ.
ÔÚÎı¾±à¼­»·¾³ÏÂ,ÒÀ¾ÝshellµÄÓï·¨¹æÔò,ÊäÈëһЩshell/linuxÃüÁîÐÐ,ÐγÉÒ»¸öÍêÕû
µÄ³ÌÐòÎļþ.
Ö´ÐÐshell³ÌÐòÎļþÓÐÈýÖÖ·½·¨
(1)#chmod +x file(ÔÚ/etc/profileÖÐ,¼ÓÈëexport PATH=${PATH}:~/yourpath,¾Í¿ÉÒÔÔÚÃüÁîÐÐÏÂÖ±½ÓÔËÐÐ,ÏñÖ´ÐÐÆÕͨÃüÁîÒ»Ñù)
(2)#sh file
(3)# . file
(4)#source file
ÔÚ±àдshellʱ,µÚÒ»ÐÐÒ»¶¨ÒªÖ¸Ã÷ϵͳÐèÒªÄÇÖÖshell½âÊÍÄãµÄshell³ÌÐò,Èç:#! /bin/bash,
#! /bin/csh,/bin/tcsh,»¹ÊÇ#! /bin/pdksh .
2.shellÖеıäÁ¿
(1)³£ÓÃϵͳ±äÁ¿
$ # :±£´æ³ÌÐòÃüÁîÐвÎÊýµÄÊýÄ¿
$ ? :±£´æÇ°Ò»¸öÃüÁîµÄ·µ»ØÂë
$ 0 :±£´æ³ÌÐòÃû
$ * :ÒÔ("$1 $2...")µÄÐÎʽ±£´æËùÓÐÊäÈëµÄÃüÁîÐвÎÊý
$ @ :ÒÔ("$1""$2"...)µÄÐÎʽ±£´æËùÓÐÊäÈëµÄÃüÁîÐвÎÊý
(2)¶¨Òå±äÁ¿
shellÓïÑÔÊÇ·ÇÀàÐ͵ĽâÊÍÐÍÓïÑÔ,²»ÏóÓÃC++/JAVAÓïÑÔ±à³ÌʱÐèÒªÊÂÏÈÉùÃ÷±äÁ¿.¸øÒ»
¸ö±äÁ¿¸³Öµ,ʵ¼ÊÉϾÍÊǶ¨ÒåÁ˱äÁ¿.
ÔÚlinuxÖ§³ÖµÄËùÓÐshellÖÐ,¶¼¿ÉÒÔÓø³Öµ·ûºÅ(=)Ϊ±äÁ¿¸³Öµ.
Èç:
abc=9 (bash/pdksh²»ÄÜÔڵȺÅÁ½²àÁôÏ¿ոñ )
set abc = 9 (tcsh/csh)
ÓÉÓÚshell³ÌÐòµÄ±äÁ¿ÊÇÎÞÀàÐ͵Ä,ËùÒÔÓû§¿ÉÒÔʹÓÃͬһ¸ö±äÁ¿Ê±¶ø´æ·Å×Ö·ûʱ¶ø´æ·Å
ÕûÊý.
Èç:
name=abc (bash/pdksh)
set name = abc (tcsh)
ÔÚ±äÁ¿¸³ÖµÖ®ºó,Ö»ÐèÔÚ±äÁ¿Ç°Ãæ¼ÓÒ»¸ö$È¥ÒýÓÃ.
Èç:
echo $abc
(3)λÖñäÁ¿
µ±ÔËÐÐÒ»¸öÖ§³Ö¶à¸öÃüÁîÐвÎÊýµÄshell³ÌÐòʱ,ÕâЩ±äÁ¿µÄÖµ½«·Ö±ð´æ·ÅÔÚλÖñäÁ¿Àï.
ÆäÖеÚÒ»¸ö²ÎÊý´æ·ÅÔÚλÖñäÁ¿1,µÚ¶þ¸ö²ÎÊý´æ·ÅÔÚλÖñäÁ¿2,ÒÀ´ÎÀàÍÆ...,shell±£Áô
ÕâЩ±äÁ¿,²»ÔÊÐíÓû§ÒÔÁîÍâµÄ·½Ê½¶¨ÒåËûÃÇ.ͬ±ðµÄ±äÁ¿,ÓÃ$·ûºÅÒýÓÃËûÃÇ.

3.shellÖÐÒýºÅµÄʹÓ÷½·¨
shellʹÓÃÒýºÅ(µ¥ÒýºÅ/Ë«ÒýºÅ)ºÍ·´Ð±Ïß("")ÓÃÓÚÏòshell½âÊÍÆ÷ÆÁ±ÎÒ»Ð©ÌØÊâ×Ö·û.
·´ÒýºÅ(")¶ÔshellÔòÓÐÌØÊâÒâÒå.
Èç:
abc="how are you" (bash/pdksh)
set abc = "how are you" (tcsh)
Õâ¸öÃüÁîÐаÑÈý¸öµ¥´Ê×é³ÉµÄ×Ö·û´®how are you×÷Ϊһ¸öÕûÌ帳ֵ¸ø±äÁ¿abc.
abc1='@LOGNAME,how are you!' (bash/pdksh)
set abc1='$LOGNAME,how are you!' (tcsh)
abc2="$LOGNAME,how are you!" (bash/pdksh)
set abc2="$LOGNAME,how are you!" (tcsh)
LOGNAME±äÁ¿ÊDZ£´æµ±Ç°Óû§ÃûµÄshell±äÁ¿,¼ÙÉèËûµÄµ±Ç°ÖµÊÇ:wang.Ö´ÐÐÍêÁ½ÌõÃüÁîºó,
abc1µÄÄÚÈÝÊÇ:$LOGNAME, how are you!.¶øabc2µÄÄÚÈÝÊÇ;wang, how are you!.
Ïóµ¥ÒýºÅÒ»Ñù,·´Ð±ÏßÒ²ÄÜÆÁ±ÎËùÓÐÌØÊâ×Ö·û.µ«ÊÇËûÒ»´ÎÖ»ÄÜÆÁ±ÎÒ»¸ö×Ö·û.¶ø²»ÄÜÆÁ±Î
Ò»×é×Ö·û.
·´ÒýºÅµÄ¹¦Äܲ»Í¬ÓÚÒÔÉϵÄÈýÖÖ·ûºÅ.Ëû²»¾ßÓÐÆÁ±ÎÌØÊâ×Ö·ûµÄ¹¦ÄÜ.µ«ÊÇ¿ÉÒÔͨ¹ýËû½«
Ò»¸öÃüÁîµÄÔËÐнá¹û´«µÝ¸øÁíÍâÒ»¸öÃüÁî.
Èç:
contents=`ls` (bash/pdksh)
set contents = `ls` (tcsh)
4.shell³ÌÐòÖеÄtestÃüÁî
ÔÚbash/pdkshÖÐ,ÃüÁîtestÓÃÓÚ¼ÆËãÒ»¸öÌõ¼þ±í´ïʽµÄÖµ.ËûÃǾ­³£ÔÚÌõ¼þÓï¾äºÍÑ­»·
Óï¾äÖб»ÓÃÀ´ÅжÏijЩÌõ¼þÊÇ·ñÂú×ã.
testÃüÁîµÄÓï·¨¸ñʽ:
test expression
»òÕß
[expression]

ÔÚtestÃüÁîÖÐ,¿ÉÒÔʹÓúܶàshellµÄÄÚ²¿²Ù×÷·û.ÕâЩ²Ù×÷·û½éÉÜÈçÏÂ:
(1)×Ö·û´®²Ù×÷·û ÓÃÓÚ¼ÆËã×Ö·û´®±í´ïʽ
testÃüÁî | º¬Òå
-----------------------------------------
Str1 = str2 | µ±str1Óëstr2Ïàͬʱ,·µ»ØTrue
Str1! = str2| µ±str1Óëstr2²»Í¬Ê±,·µ»ØTrue
Str | µ±str²»ÊÇ¿Õ×Ö·ûʱ,·µ»ØTrue
-n str | µ±strµÄ³¤¶È´óÓÚ0ʱ,·µ»ØTrue
-z str | µ±strµÄ³¤¶ÈÊÇ0ʱ,·µ»ØTrue
-----------------------------------------
(2)ÕûÊý²Ù×÷·û¾ßÓкÍ×Ö·û²Ù×÷·ûÀàËÆµÄ¹¦ÄÜ.Ö»ÊÇËûÃǵIJÙ×÷ÊÇÕë¶ÔÕûÊý
test±í´ïʽ | º¬Òå
---------------------------------------------
Int1 -eq int2|µ±int1µÈÓÚint2ʱ,·µ»ØTrue
Int1 -ge int2|µ±int1´óÓÚ/µÈÓÚint2ʱ,·µ»ØTrue
Int1 -le int2|µ±int1СÓÚ/µÈÓÚint2ʱ,·µ»ØTrue
Int1 -gt int2|µ±int1´óÓÚint2ʱ,·µ»ØTrue
Int1 -ne int2|µ±int1²»µÈÓÚint2ʱ,·µ»ØTrue
-----------------------------------------
(3)ÓÃÓÚÎļþ²Ù×÷µÄ²Ù×÷·û,ËûÃÇÄܼì²é:ÎļþÊÇ·ñ´æÔÚ,ÎļþÀàÐ͵È
test±í´ïʽ | º¬Òå
------------------------------------------------
-d file |µ±fileÊÇÒ»¸öĿ¼ʱ,·µ»Ø True
-f file |µ±fileÊÇÒ»¸öÆÕͨÎļþʱ,·µ»Ø True
-r file |µ±fileÊÇÒ»¸ö¿Ì¶ÁÎļþʱ,·µ»Ø True
-s file |µ±fileÎļþ³¤¶È´óÓÚ0ʱ,·µ»Ø True
-w file |µ±fileÊÇÒ»¸ö¿ÉдÎļþʱ,·µ»Ø True
-x file |µ±fileÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþʱ,·µ»Ø True
------------------------------------------------
(4)shellµÄÂß¼­²Ù×÷·ûÓÃÓÚÐÞÊÎ/Á¬½Ó°üº¬ÕûÊý,×Ö·û´®,Îļþ²Ù×÷·ûµÄ±í´ïʽ
test±í´ïʽ | º¬Òå
----------------------------------------------------------
! expr |µ±exprµÄÖµÊÇFalseʱ,·µ»ØTrue
Expr1 -a expr2|µ±expr1,expr2ֵͬΪTrueʱ,·µ»ØTrue
Expr1 -o expr2|µ±expr1,expr2µÄÖµÖÁÉÙÓÐÒ»¸öΪTrueʱ,·µ»ØTrue
-----------------------------------------------------------
×¢Òâ:
tcsh shell ²»Ê¹ÓÃtestÃüÁî,µ«ÊÇtcshÖеıí´ïʽͬÑùÄܳе£ÏàͬµÄ¹¦ÄÜ.tcsh
Ö§³ÖµÄ±í´ïʽÓÚCÖеıí´ïʽÏàͬ.ͨ³£Ê¹ÓÃÔÚifºÍwhileÃüÁîÖÐ.
tcsh±í´ïʽ | º¬Òå
-------------------------------------------------------
Int1 <= int2 |µ±int1СÓÚ/µÈÓÚint2ʱ,·µ»ØTrue
Int1 >= int2 |µ±int1´óÓÚ/µÈÓÚint2ʱ,·µ»ØTrue
Int1 < int2 |µ±int1СÓÚint2ʱ,·µ»ØTrue
Int1 > int2 |µ±int1´óÓÚint2ʱ,·µ»ØTrue
Str1 == str2 |µ±str1Óëstr2Ïàͬʱ,·µ»ØTrue
Str1 != str2 |µ±str1Óëstr2²»Í¬Ê±,·µ»ØTrue
-r file |µ±fileÊÇÒ»¸ö¿É¶ÁÎļþʱ,·µ»ØTrue
-w file |µ±fileÊÇÒ»¸ö¿ÉдÎļþʱ,·µ»ØTrue
-x file |µ±fileÊÇÒ»¸ö¿ÉÖ´ÐÐÎļþʱ,·µ»ØTrue
-e file |µ±file´æÔÚʱ,·µ»ØTrue
-o file |µ±fileÎļþµÄËùÓÐÕßÊǵ±Ç°Óû§Ê±,·µ»ØTrue
-z file |µ±file³¤¶ÈΪ0ʱ,·µ»ØTrue
-f file |µ±fileÊÇÒ»¸öÆÕͨÎļþʱ,·µ»ØTrue
-d file |µ±fileÊÇÒ»¸öĿ¼ʱ,·µ»ØTrue
Exp1 || exp2 |µ±exp1ºÍexp2µÄÖµÖÁÉÙÒ»¸öΪTrueʱ,·µ»ØTrue
Exp1 && exp2 |µ±exp1ºÍexp2µÄֵͬΪTrueʱ,·µ»ØTrue
! exp |µ±expµÄֵΪFalseʱ,·µ»ØTrue
-------------------------------------------------------

/***************************************************/

ÏȲ»Òª¹ÜShellµÄ°æ±¾£¬À´¿´¿´Shell ±äÁ¿£¬ÔÚShellÖÐÓÐÈýÖÖ±äÁ¿£ºÏµÍ³±äÁ¿£¬»·¾³±äÁ¿£¬Óû§±äÁ¿¡£ÆäÖÐÓû§±äÁ¿ÔÚ±à³Ì¹ý³ÌÖÐʹÓÃ×î¶à£¬ÏµÍ³±äÁ¿ÔÚ¶Ô²ÎÊýÅжϺÍÃüÁî·µ»ØÖµÅжϻáʹÓ㬻·¾³±äÁ¿Ö÷ÒªÊÇÔÚ³ÌÐòÔËÐеÄʱºòÐèÒªÉèÖá£

1 ϵͳ±äÁ¿

Shell³£ÓõÄϵͳ±äÁ¿²¢²»¶à£¬µ«È´Ê®·ÖÓÐÓã¬ÌرðÊÇÔÚ×öһЩ²ÎÊý¼ì²âµÄʱºò¡£ÏÂÃæÊÇShell³£ÓõÄϵͳ±äÁ¿

±íʾ·½·¨ ÃèÊö
$n $1 ±íʾµÚÒ»¸ö²ÎÊý£¬$2 ±íʾµÚ¶þ¸ö²ÎÊý ...
$# ÃüÁîÐвÎÊýµÄ¸öÊý
$0 µ±Ç°³ÌÐòµÄÃû³Æ
$? ǰһ¸öÃüÁî»òº¯ÊýµÄ·µ»ØÂë
$* ÒÔ"²ÎÊý1 ²ÎÊý2 ... " ÐÎʽ±£´æËùÓвÎÊý
$@ ÒÔ"²ÎÊý1" "²ÎÊý2" ... ÐÎʽ±£´æËùÓвÎÊý
$$ ±¾³ÌÐòµÄ(½ø³ÌIDºÅ)PID
$! ÉÏÒ»¸öÃüÁîµÄPID
ÆäÖÐʹÓõñȽ϶àµÃÊÇ $n $# $0 $? ,¿´¿´ÏÂÃæµÄÀý×Ó£º BeautifierPlugin Error: Unable to handle "bash" syntax.

#!/bin/sh
#This file is used to explain the shell system variable.
echo "the number of parameter is $# ";
echo "the return code of last command is $?";
echo "the script name is $0 ";
echo "the parameters are $* ";
echo "$1 = $1 ; $2 = $2 ";

ÏÂÃæÊÇÔËÐнá¹û£º

BeautifierPlugin Error: Unable to handle "bash" syntax.

-bash-2.05b$ ./chapter2.1.sh winter stlchina
the number of parameter is 2 
the return code of last command is 0
the script name is ./chapter2.1.sh 
the parameters are winter stlchina 
$1 = winter ; $2 = stlchina 

Õâ¸öÀý×ÓÌ«¼òµ¥ÁË£¬Ò»µãÒ²²»ÊµÓã¬ÏÂÃæÀ´¸öʵÓõģ¬Èç¹ûÄã¿´²»¶®£¬Ã»ÓйØÏµ£¬ºóÃæµÄÄÚÈÝ»áÓÐÏêϸ½âÊÍ¡£ BeautifierPlugin Error: Unable to handle "bash" syntax.

#!/bin/sh
if [ $# -ne 2 ] ; then
echo "Usage: $0 string file";
exit 1;
fi
grep $1 $2 ;
if [ $? -ne 0 ] ; then
echo "Not Found "$1" in $2";
exit 1;
fi
echo "Found "$1" in $2";

ÉÏÃæµÄÀý×ÓÖÐʹÓÃÁË$0 $1 $2 $# $? µÈ±äÁ¿£¬ÏÂÃæÊdzÌÐòµÄ½âÊÍ£º

  1. ÅжÏÔËÐвÎÊý¸öÊý£¬Èç¹û²»µÈÓÚ2£¬ÏÔʾʹÓÃ"Ó÷¨°ïÖú", ÆäÖÐ $0 ±íʾ¾ÍÊǽű¾×Ô¼º¡£
  2. ÓÃgrep ÔÚ$2 ÎļþÖвéÕÒ$1 ×Ö·û´®¡£
  3. ÅжÏǰһ¸öÃüÁîÔËÐкóµÄ·µ»ØÖµ(Ò»°ã³É¹¦¶¼»á·µ»Ø0, ʧ°Ü¶¼»á·µ»Ø·Ç0)¡£
  4. Èç¹ûûÓгɹ¦ÏÔʾûÕÒµ½Ïà¹ØÐÅÏ¢£¬·ñÔòÏÔʾÕÒµ½ÁË¡£
  5. ÆäÖÐ"±íʾתÒ壬ÔÚ"" ÀïÃæ»¹ÐèÒªÏÔʾ"ºÅ£¬ÔòÐèÒª¼ÓÉÏתÒå·û" .

ÏÂÃæÔËÐеÄÀý×Ó£º

BeautifierPlugin Error: Unable to handle "bash" syntax.

./chapter2.2.sh usage chapter2.2.sh 
Not Found "usage" in chapter2.2.sh
-bash-2.05b$ ./chapter2.2.sh Usage chapter2.2.sh      
echo "Usage: $0 string file";
Found "Usage" in chapter2.2.sh

2 ShellÓû§±äÁ¿

2.1 »ù´¡

²»¹Üϵͳ±äÁ¿ÓжàÉÙ£¬¶ÔÓÚÐèÇóÀ´Ëµ£¬×ÜÊDz»¹»µÄ¡£Óû§±äÁ¿ÊÇ×î³£Óõ½µÄ±äÁ¿£¬Ê¹ÓÃҲʮ·Ö¼òµ¥¡£

Óû§¶¨ÒåµÄ±äÁ¿±ØÐëÓÉ×ÖĸÊý×Ö¼°Ï»®Ïß×é³É,²¢ÇÒ±äÁ¿ÃûµÄµÚÒ»¸ö×Ö·û²»ÄÜΪÊý×Ö, ÓëÆäËüUNIXÃû×ÖÒ»Ñù,±äÁ¿ÃûÊÇ´óСдÃô¸ÐµÄ. ¶ÔÓÚÓû§±äÁ¿,Óû§¿É°´ÈçÏ·½Ê½¸³Öµ: BeautifierPlugin Error: Unable to handle "bash" syntax.

  name="Winter"

ÔÚÒýÓñäÁ¿Ê±,ÐèÔÚÇ°Ãæ¼Ó$·ûºÅ£¬Óû§Ò²¿ÉÒÔÔÚ±äÁ¿¼ä½øÐÐÏ໥¸³Öµ,Èç: BeautifierPlugin Error: Unable to handle "bash" syntax.

  name="Winter"
  WINTER=$name
  echo "Hello $WINTER !"

Êä³ö½á¹ûÓ¦¸ÃºÜÇå³þ£ºHello Winter !

ÕâÀïÐèҪעÒâÒ»µã£º±äÁ¿ºÍ'='Ö®¼ä²»ÒªÓпոñ£¬'='ºÍ¸³ÖµÒ²²»ÒªÓпոñ£¬·ñÔòshell²»»áÈÏΪ±äÁ¿±»¶¨Òå¡£ÕÆÎÕÁË»ù±¾µÄʹÓ÷½·¨£¬Äã¿ÉÒÔÍêÈ«¿ªÊ¼ÄãµÄ±à³Ì¹¤×÷ÁË¡£²»¹ýÓÐʱºòÐèҪδÓê³ñçÑ£¬ÏÂÃæ½éÉÜÓû§±äÁ¿µÄһЩ¼¼ÇÉ¡£

2.2 ʹÓü¼ÇÉ

Ò²¿ÉÒÔÓñäÁ¿ºÍÆäËû×Ö·û×é³ÉеÄ×Ö,Õâʱ¿ÉÄÜÐèÒª°Ñ±äÁ¿ÓÃ{}À¨Æð,Èç: BeautifierPlugin Error: Unable to handle "bash" syntax.

 SAT=Satur
 echo Today is ${SAT}day

Êä³ö½á¹ûÊÇ£º Today is Saturday

ÓÐʱºòΪÁ˱ÜÃâ±äÁ¿ÃûºÍ±ðµÄ×Ö·û²úÉú»ìÏý£¬Äã×îºÃÑø³Éϰ¹ß°Ñ±äÁ¿ÃûÓÃ{}À¨ÆðÀ´¡£

¶ÔÓÚδ¸³ÖµµÄ±äÁ¿, ShellÒÔ¿ÕÖµ¶Ô´ý, Óû§Ò²¿ÉÒÔÓÃunsetÃüÁîÇå³ý¸ø±äÁ¿¸³µÄÖµ.¿´Ò»¸öÀý×Ó£º BeautifierPlugin Error: Unable to handle "bash" syntax.

#!/bin/sh
echo "a=$a" ;
a=2
echo "a=$a" ;
unset a
echo "a=$a" ;

ÏȲ²½á¹ûÊÇʲô£¿ BeautifierPlugin Error: Unable to handle "bash" syntax.

-bash-2.05b$ ./test.sh 
a=
a=2
a=

Èç¹ûÄã¶®C++£¬ÄãÓ¦¸ÃÖªµÀÓиö±äÁ¿ÐÞÊηû"const"£¬ÓÃÓÚ±ÜÃâ³ÌÐòÒ»²»Ð¡ÐĶԱäÁ¿½øÐÐÐ޸ġ£ÔÚshellÖУ¬¶ÔÓÚÓû§±äÁ¿£¬Äã¿ÉÒÔʹÓÃͬÑùµÄÐÞÊηû"readonly", Èç¹ûÎÒ°ÑÉÏÃæµÄÀý×ÓÐ޸ijÉÕâÑù: BeautifierPlugin Error: Unable to handle "bash" syntax.

#!/bin/sh
echo "a=$a" ;
#ÏÂÃæÔö¼ÓÁËreadonly
readonly a=2    
echo "a=$a" ;
unset a
echo "a=$a" ;

Æä½á¹ûµ±È»»á²»Ò»ÑùÁË£º BeautifierPlugin Error: Unable to handle "bash" syntax.

-bash-2.05b$ ./test.sh 
a=
a=2
a=2

2.3 shell ÖеÄÊý×é

shell±äÁ¿Öл¹ÄÜÉèÖÃÊý×飬µ«ÊDz»Í¬µÄshell°æ±¾Óв»Í¬Êý×鸳ֵ·½·¨£¬¶øbourne shell Öв»Ö§³ÖÊý×鷽ʽ¡£Òò´Ë£¬Èç¹û²»ÊÇÊ®·ÖÐèÒª£¬»¹Êǽ¨ÒéÄ㲻ҪʹÓÃÊý×é¡£ÈôÄãµÄÊý¾Ý½á¹¹Ê®·Ö¸´ÔÓ£¬±ØÐëҪʹÓÃÊý×飬ÄÇôÎÒ½¨ÒéÄ㻹ÊÇÑ¡Ôñ±ðµÄÓïÑÔ°É£¬shell²»ÊÇÍòÄܵġ£

shellÓÐÁ½ÖÖ¸³Öµ·½Ê½£¬µÚÒ»ÖÖÊÇÖ±½ÓÓÃϱ긳ֵ£º BeautifierPlugin Error: Unable to handle "bash" syntax.

name[0]="Tom"
name[1]="Tomy"
name[2]="John"
...

ÁíÒ»ÖÖ·½Ê½¶ÔÓÚ²»Í¬µÄshell°æ±¾²»Ò»Ñù¡£bashÖи³Öµ£º BeautifierPlugin Error: Unable to handle "bash" syntax.

#!/usr/local/bin/bash
name=("Tom" "Tomy" "John")
for i in 0  1 2
do
 echo $i:${name[$i]} ;
done;

ÉÏÃæÁ½ÖÖ¸³Öµ·½Ê½´ïµ½µÄЧ¹ûÒ»Ñù¡£ÁíÍ⣬Äã¿´¼û·ÃÎÊÊý×éÔªËØµÄ·½·¨ÁËÂð£¿Ê¹ÓÃ${name[index]}µÄ·½Ê½¡£×¢ÒâµÚÒ»ÐÐʹÓõÄÊÇ#!/usr/local/bin/bash, ºÍÒÔǰÓÐЩ²»Ò»ÑùŶ¡£ÆäÊä³ö½á¹ûÊÇ£º BeautifierPlugin Error: Unable to handle "bash" syntax.

-bash-2.05b$ ./test.sh    
0:Tom
1:Tomy
2:John

3 shell »·¾³±äÁ¿

shell »·¾³±äÁ¿ÊÇËùÓÐshell ³ÌÐò¶¼»á½ÓÊܵIJÎÊý¡£shell³ÌÐòÔËÐÐʱ£¬¶¼»á½ÓÊÕÒ»×é±äÁ¿£¬Õâ×é±äÁ¿¾ÍÊÇ»·¾³±äÁ¿¡£³£ÓõĻ·¾³±äÁ¿£º

Ãû³Æ ÃèÊö
PATH ÃüÁîËÑË÷·¾¶,ÒÔðºÅΪ·Ö¸ô·û.×¢ÒâÓëDOSϲ»Í¬µÄÊÇ, µ±Ç°Ä¿Â¼²»ÔÚϵͳ·¾¶Àï
HOME Óû§homeĿ¼µÄ·¾¶Ãû,ÊÇcdÃüÁîµÄĬÈϲÎÊý
COLUMNS ¶¨ÒåÁËÃüÁî±à¼­Ä£Ê½Ï¿ÉʹÓÃÃüÁîÐеij¤¶È
EDITOR ĬÈϵÄÐб༭Æ÷
VISUAL ĬÈϵĿÉÊӱ༭Æ÷
FCEDIT ÃüÁîfcʹÓõı༭Æ÷
HISTFILE ÃüÁîÀúÊ·Îļþ
HISTSIZE ÃüÁîÀúÊ·ÎļþÖÐ×î¶à¿É°üº¬µÄÃüÁîÌõÊý
HISTFILESIZE ÃüÁîÀúÊ·ÎļþÖаüº¬µÄ×î´óÐÐÊý
IFS ¶¨ÒåSHELLʹÓõķָô·û
LOGNAME Óû§µÇ¼Ãû
MAIL Ö¸ÏòÒ»¸öÐèÒªSHELL¼àÊÓÆäÐÞ¸Äʱ¼äµÄÎļþ.µ±¸ÃÎļþÐ޸ĺó, SHELL½«·¢ÏûÏ¢You hava mail¸øÓû§
MAILCHECK SHELL¼ì²éMAILÎļþµÄÖÜÆÚ,µ¥Î»ÊÇÃë
MAILPATH ¹¦ÄÜÓëMAILÀàËÆ.µ«¿ÉÒÔÓÃÒ»×éÎļþ,ÒÔðºÅ·Ö¸ô,ÿ¸öÎļþºó¿É¸úÒ»¸öÎʺźÍÒ»Ìõ·¢ÏòÓû§µÄÏûÏ¢
SHELL SHELLµÄ·¾¶Ãû
TERM ÖÕ¶ËÀàÐÍ
TMOUT SHELL×Ô¶¯Í˳öµÄʱ¼ä,µ¥Î»ÎªÃë,ÈôÉèΪ0Ôò½ûÖ¹SHELL×Ô¶¯Í˳ö
PROMPT_COMMAND Ö¸¶¨ÔÚÖ÷ÃüÁîÌáʾ·ûǰӦִÐеÄÃüÁî
PS1 Ö÷ÃüÁîÌáʾ·û
PS2 ¶þ¼¶ÃüÁîÌáʾ·û,ÃüÁîÖ´Ðйý³ÌÖÐÒªÇóÊäÈëÊý¾ÝʱÓÃ
PS3 selectµÄÃüÁîÌáʾ·û
PS4 µ÷ÊÔÃüÁîÌáʾ·û
MANPATH ѰÕÒÊÖ²áÒ³µÄ·¾¶,ÒÔðºÅ·Ö¸ô
LD_LIBRARY_PATH ѰÕÒ¿âµÄ·¾¶,ÒÔðºÅ·Ö¸ô

ÕâЩ±äÁ¿£¬Òª¹Ø×¢µÄ×î¶àµÄ¾ÍÊÇPATH, ÆäÖØÒªÐÔ²»ÒªÎÒ˵Á˰ɣ¿

Èç¹ûÄãÏ£Íû°ÑÄ㶨ÒåµÄ±äÁ¿ÈÃÆäËûËùÓеÄshell³ÌÐò¶¼ÄÜʹÓã¬Ò²¾ÍÊǶ¨ÒåÐµĻ·¾³±äÁ¿¡£ÄãֻҪʹÓÃexport¹Ø¼ü´Ê¾Í¿ÉÒÔÁË¡£ÀýÈ磺 BeautifierPlugin Error: Unable to handle "bash" syntax.

export MY_NAME=Winter
export PATH=/home/winter/bin:$PATH

ÉÏÃæµÄ³ÌÐòÖУ¬µÚÒ»ÐÐÊä³öMY_NAME±äÁ¿£¬µÚ¶þÐÐÊÇÔÚ»·¾³±äÁ¿PATHÖÐÔö¼ÓÒ»¸ö·¾¶/home/winter/bin ¡£Èç¹ûÄãÏ£ÍûÕâЩÉèÖÃÔÚÄãµÇ½unix/linux¶¼ÓÐЧ£¬ÄãÐèÒª°ÑËûÃǼÓÈëµ½ÄãµÄshellÆô¶¯½Å±¾ÖÐ, Èç¹ûÊÇʹÓÃbash BeautifierPlugin Error: Unable to handle "bash" syntax.

~/.bash_profile

ÆäËû°æ±¾Äã¿´Ò»ÑÛ¾ÍÖªµÀÁË£¬ÔÚÄãµÄhomeĿ¼Ï£¬ÒÔ"."¿ªÍ·µÄÎļþ£¬Ò»°ã¶¼»áÒþ²ØÆðÀ´£¬ÄãÐèҪʹÓÃ'ls -al'ÃüÁîÀ´ÏÔʾ


5 07, 2007

ÈçºÎ²éѯÊÓͼÖÐÄÄЩ×Ö¶ÎÊÇÔÊÐí¸üÐÂ

ORACLEϵͳ±íÖУ¬ÓÐÒ»ÕÅÊÓͼ£¬¼Ç¼ËùÓпÉÒÔ¸üкͲ»¿ÉÒÔ¸üеÄÊÓͼ(ºÍÊý¾Ý±í)£ºUser_Updateable_Columns ¸ÃÊÓͼ×Ö¶ÎÈçÏÂ:
Name Type Nullable Default Comments
----------- ------------ -------- ------- -------------------------
OWNER VARCHAR2(30) Table owner
TABLE_NAME VARCHAR2(30) Table name
COLUMN_NAME VARCHAR2(30) Column name
UPDATABLE VARCHAR2(3) Y Is the column updatable?
INSERTABLE VARCHAR2(3) Y Is the column insertable?
DELETABLE VARCHAR2(3) Y Is the column deletable?
ʹÓÃSelect * From user_Updateable_Columns Where Table_name=Upper('YourViewname') ¼´¿É²éѯÊÓͼÖÐÄÄЩ×Ö¶ÎÊÇÔÊÐí¸üеÄ