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. Èç¹ûÒª³ÉÅú»Ö¸´»òÈ«±í»Ö¸´Êý¾ÝµÄ»°,Òª¼ì²éÊÇ·ñÔÚÖ¸¶¨µÄʱ¼äÇø¼äÄÚ»¹ÓÐÆäËû»á»°Ð´ÈëµÄÊý¾Ý

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>

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') ¼´¿É²éѯÊÓͼÖÐÄÄЩ×Ö¶ÎÊÇÔÊÐí¸üеÄ

15 05, 2007

ÉÏ´«ºÍÏÂÔØEBS¹¦ÄÜ,²Ëµ¥¾ÙÀý

¿ª·¢Íê³É,ÔÚ²âÊÔ»·¾³×¢²á.È»ºóÏÂÔØ,È»ºóÉÏ´«.

#################################
/*Download Form & Function*/
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK";export NLS_LANG
$FND_TOP/bin/FNDLOAD apps/<password> 0 Y DOWNLOAD @FND:patch/115/import/afsload.lct <your name>.ldt FUNCTION FUNC_APP_SHORT_NAME=<your name> FUNCTION_NAME=<your name>

/*Upload Form & Function*/
$FND_TOP/bin/FNDLOAD apps/<password> 0 Y UPLOAD @FND:patch/115/import/afsload.lct <your name>.ldt

#################################
/*Download Menu*/
/*need download both version of US and ZHS*/
/*Download US version*/
FNDLOAD apps/scerp1 0 Y DOWNLOAD @FND:patch/115/import/afsload.lct menu.ldt MENU MENU_NAME=menu

/*Download ZHS version*/
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK";export NLS_LANG
FNDLOAD apps/scerp1 0 Y DOWNLOAD @FND:patch/115/import/afsload.lct menu_zhs.ldt MENU MENU_NAME=menu

/*Download Sub Menu*/
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afsload.lct CMCC_PA_ASSET_US.ldt MENU PARENT_MENU_NAME="PA_SUPERUSER_GUI (PC)" SUB_MENU_NAME=CMCC_PA_ASSET

/*Upload Menu*/
/*Upload US version first*/
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afsload.lct menu.ldt

/*then upload ZHS*/
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afsload.lct menu_zhs.ldt - UPLOAD_MODE=NLS

#################################
/*Download Request Set*/
1 Request set definitions
FNDLOAD apps/<apps_pwd> 0 Y DOWNLOAD @FND:patch/115/import/afcprset.lct <sample_definitions>.ldt REQ_SET REQUEST_SET_NAME="<Request_Set_Code>"

2 Request set stage link
FNDLOAD apps/<apps_pwd> 0 Y DOWNLOAD @FND:patch/115/import/afcprset.lct <sample_links>.ldt REQ_SET_LINKS REQUEST_SET_NAME="<Request_Set_Code>"

/*Upload Request Set*/
1 Request set definitions
FNDLOAD apps/<apps_pwd> 0 Y UPLOAD @FND:patch/115/import/afcprset.lct <sample_definitions>.ldt
2 Request set stage link
FNDLOAD apps/<apps_pwd> 0 Y UPLOAD @FND:patch/115/import/afcprset.lct <sample_links>.ldt

##################################
/*Download Message*/
/*need download US ans ZHS, same as download MENU*/
FNDLOAD apps/<apps_pwd> 0 Y DOWNLOAD @FND:patch/115/import/afmdmsg.lct message.ldt FND_NEW_MESSAGES MESSAGE_NAME=message_name

/*Upload Message*/
/*upload both of ZHS and US*/
FNDLOAD apps/<apps_pwd> 0 Y UPLOAD @FND:patch/115/import/afmdmsg.lct message.ldt

##################################
/*Download Profile*/
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afscprof.lct profile.ldt PROFILE PROFILE_NAME=profile_name

/*Upload Profile*/
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afscprof.lct profile.ldt
#Don't know how to use FND_PROFILE_OPTION_VALUES

###################################
/*Download description flexfield*/
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afffload.lct descript_flex.ldt DESC_FLEX DESCRIPTIVE_FLEXFIELD_NAME=description_flexfield_name ---(not title)
click title->help->
diagnostics->
examine->
block=table,field=DESCRIPTIVE_FLEXFIELD_NAME->
description_flexfield_name=value

/*Upload description flexfield*/
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afffload.lct descript_flex.ldt

/*download only 1 context */
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afffload.lct descript_flex.ldt DESC_FLEX DESCRIPTIVE_FLEXFIELD_NAME=PER_EVENTS P_CONTEXT_CODE='Global Data Elements' P_LEVEL='COL_ALL:REF_ALL:CTX_ONE:SEG_ALL'

###################################
/*Download valueset*/
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afffload.lct valueset.ldt VALUE_SET FLEX_VALUE_SET_NAME=valueset_name

/*Upload description flexfield*/
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afffload.lct valueset.ldt

###################################
/*Upload workflow*/
WFLOAD apps/apps 0 Y UPLOAD workflow.wft

###################################
/* Download Concurrent Programs */
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afcpprog.lct concurrent_program.ldt PROGRAM CONCURRENT_PROGRAM_NAME=concurrent_programs APPLICATION_SHORT_NAME=application_short_name

/* Upload Concurrent Programs */
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afcpprog.lct QGLXJLLB.ldt

/* overwrite the old concurrent programs */
FNDLOAD apps/apps 0 Y UPLOAD @FND:patch/115/import/afcpprog.lct QGLPRJNL.ldt - CUSTOM_MODE=FORCE

######################################################
/* compile flexfield structure using unix command */
The syntax for fdfcmp:
For Descriptive Flexfields:
fdfcmp oraid/pswd 0 Y D[escriptive] <appl_short_name> <desc_flex_name>
For Key Flexfields:
fdfcmp oraid/pswd 0 Y K[ey] <appl_short_name> <id_flex_code id_flex_num>
For Reports:
fdfcmp oraid/pswd 0 Y R[eport] <appl_short_name> <report_name>
eg:
fdfcmp apps/apps 0 Y R CGL QCGLJNR1

###################################
/* Download Concurrent Program Printer Style */
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:patch/115/import/afcppstl.lct CMCC_LANDSCAPE_220_66.ldt STYLE PRINTER_STYLE_NAME=CMCC_LANDSCAPE_220_66

######################################################
/* Download Lookups */
FNDLOAD apps/apps 0 Y DOWNLOAD @FND:/patch/115/import/aflvmlu.lct <ldt filename> FND_LOOKUP_TYPE LOOKUP_TYPE=<LOOKUP TYPE NAME>

/* Upload Lookups */
FNDLOAD apps/apps 0 Y UPLOAD @FND:/patch/115/import/aflvmlu.lct <ldt filename>

##################################################################################
web plsql

FNDLOAD apps/apps 0 Y DOWNLOAD @FND:/patch/115/import/afscursp.lct QPACAPITAL_PLSQL.ldt FND_ENABLED_PLSQL PLSQL_NAME=QPACAPITAL

FNDLOAD apps/apps 0 Y UPLOAD @FND:/patch/115/import/afscursp.lct QPACAPITAL_PLSQL.ldt

#############################################################################
11.5.10ÐÂÔöµÄ¡°°ïÖú-Õï¶Ï-×Ô¶¨Òå´úÂë-¸öÐÔ»¯¡±¹¦ÄÜÖеĺ¯Êý¿ÉÒÔͨ¹ýÏÂÃæµÄÓï¾ä½øÐÐÒÆÖ²£º
ÆäÖеġ°function_name¡±¿ÉÒÔ´Ó¡°°ïÖú-Õï¶Ï-×Ô¶¨Òå´úÂë-¸öÐÔ»¯-º¯ÊýÃû¡±ÖлñµÃ¡£
ÏÂÔØ£ºASCII
FNDLOAD apps/apps 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct POXPRREPR.lct FND_FORM_CUSTOM_RULES function_name=PO_POXRQERQ
ÉÏ´«£ºASCII
FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct POXPRREPR.lct


15 04, 2007

EBS¿ª·¢»ù´¡ÖªÊ¶

EBS¿ª·¢»ù´¡ÖªÊ¶

½ü¼¸ÄêÓÐÐÒ²ÎÓëÁËһЩ´ó¿ª·¢ÏîÄ¿µÄÏîÄ¿¹ÜÀíºÍ¼à¶½¹¤×÷£¬·¢Ïֺܶ࿪·¢ÈËÔ±¶ÔһЩ¸ÅÄî»òÕß³ÌÐòµÄд·¨²»ÊǺÜÇå³þ£¬ÕâÒ²°üÀ¨Ò»Ð©¸ß¼¶µÄ¿ª·¢ÈËÔ±Ò²»á·¸Ò»Ð©»ù±¾µÄ´íÎó£¬Òò´ËÎÒ¾ÍÕûÀíһϴó¼ÒÈÝÒ×·¸µÄ´íÎó£¬Ï£Íû´ó¼ÒÄܹ»ÔÚд³ÌÐòµÄʱºòÑø³ÉÁ¼ºÃϰ¹ß¡£

Ò»¡¢ÀýÍâ´¦ÀíÎÊÌâ

ÓкܶàÈËϲ»¶ÔÚ´¦Àíexceptionʱ£¬ÖÃΪ'null'£¬Ó¦¸Ã˵ÕâÊÇÒ»¸öºÜ²»ºÃµÄϰ¹ß£¬Èç¹ûûÓж¨ÒåÌØ¶¨µÄexception£¬×îÆðÂëÓ¦¸Ã°ÑÊý¾Ý¿âµÄ´íÎóÐÅÏ¢ÍêÕûµÄ±¨³öÀ´¡£
´íÎóµÄд·¨£º
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
ÕýÈ·µÄд·¨£º
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLCODE);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT, SQLERRM);
END;

¶þ¡¢²¢·¢ÇëÇóµÄOUTPUTºÍLOG²»·Ö

ÓеÄͬѧÔÚ²¢·¢ÇëÇóÊä³öµÄʱºò£¬²»ÖªµÀÈçºÎ°ÑÈÕÖ¾Êä³ö³öÀ´£¬ÆäʵºÜ¼òµ¥£º
Êä³öµ½ÇëÇóµÄÊä³ö£ºFND_FILE.PUT_LINE(FND_FILE.OUTPUT, 'XXXXXXX');
Êä³öµ½ÇëÇóµÄÈÕÖ¾£ºFND_FILE.PUT_LINE(FND_FILE.LOG, 'XXXXXX');
Ò»°ãÇé¿öÊǰѱ¨±íµÄÄÚÈÝÊä³öµ½OUTPUT£¬°Ñ±¨±íÖмäµÄdebugÂß¼­Êä³öµ½logÖС£

Èý¡¢ÔÚEBS»·¾³Ö®ÍâÔËÐÐEBS³ÌÐòµÄ³õʼ»¯ÎÊÌâ

ÎÒÃǾ­³£»áÓöµ½ÔÚpl/sqlÖÐÔËÐÐij¸öÊÓͼ£¬²»ÄÜÏÔʾ³öÊý¾Ý£¬µ«ÊÇÔÚ½çÃæÉÏÈ·ÓÐÊý¾Ý£¬ÕâÖ÷ÒªÊÇÒòΪÊÓͼÊÇOUÆÁ±ÎµÄ£¬Òò´ËÐèÒªÄãÔÚpl/sqlÖгõʼ»¯ÄãµÄÉí·Ý£¬³õʼ»¯µÄ³ÌÐòÈçÏ£¬ÕâÑùÄã¾Í¿ÉÒÔÔÚÈκÎpl/sql»·¾³ÖÐÔËÐÐEBSµÄÊÓͼÁË£¬ÀýÈçPO_HEADERS£¬PO_LINESµÈ
BEGIN
FND_GLOBAL.APPS_INITIALIZE(USER_ID => ,RESP_ID => ,RESP_APPL_ID => );
END;

ËÄ¡¢ÏûÏ¢µÄʹÓã¬ÎÒ¾­³£¿´µ½ÓеÄͬѧϲ»¶ÔÚFORMÖÐÖ±½ÓʹÓÃFND_MESSAGE.DEBUG('xxxxx');À´ÏÔʾ´íÎó»òÌáʾÐÅÏ¢£¬Êµ¼ÊÉÏÕâÊǷdz£²»ÕýÈ·µÄ×ö·¨¡£

¹ËÃû˼¼°DEBUGÊÇÓÃÀ´µ÷ÊԵ쬲¢²»ÊÇÓÃÀ´½øÐÐÈË»ú½»»¥µÄÓѺõķ½Ê½£¬Ò²²»·ûºÏOracleµÄ±ê×¼Ó÷¨¡£
OracleµÄ±ê×¼Ó÷¨ÊÇʹÓÃFND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;

Ò»°ãÇé¿öÏÂÔÚFORMÖÐÏÔʾ³ö´íÐÅϢʹÓÃÒÔÏ´úÂ룺
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
FND_MESSAGE.ERROR ;

ÔÚPACKAGEÖÐÏÔʾ³ö´íÐÅÏ¢Ò»°ãʹÓÃÒÔÏ´úÂ룺
FND_MESSAGE.SET_NAME( APPL_SHORT_NAME,MESSAGE_NAME) ;
APP_EXCEPTION.RAISE_EXCEPTION ;

È»ºóÔÚEBSµÄÓ¦Óÿª·¢Õß϶¨ÒåÖÐÎĺÍÓ¢ÎÄÏûÏ¢£¬È»ºóÌá½»ÇëÇó"Éú³ÉÐÅÏ¢"À´Éú³ÉÏûÏ¢£¬Ê¹ÓÃÕâÖÖ·½Ê½¿ÉÒÔÊÊÓÃÓÚ¶àÓïÑÔºÍÐÞ¸ÄÈË»ú½çÃæµÄÌáʾÐÅÏ¢£¬¶ø²»ÓÃÈ¥ÐÞ¸ÄÔ´³ÌÐò¡£

Îå¡¢EBSÖпͻ§»¯±í½á¹¹µÄÉè¼ÆÔ­Ôò£º

1)±ØÐë°üÀ¨Ò»¸öÖ÷¼ü£¬²¢½¨Á¢ÏàÓ¦µÄÐòÁУ»
2)½¨Á¢5¸öWHO×Ö¶Î,Ò²¾ÍÊÇ
CREATED_BY NUMBER
CREATION_DATE DATE
LAST_UPDATED_BY NUMBER
LAST_UPDATE_DATE DATE
LAST_UPDATE_LOGIN NUMBER
ÔÚFORMÖÐʹÓÃÊôÐÔÀࣺCREATION_OR_LAST_UPDATE_DATE£¬WHO×ֶβ¢²»»á×Ô¶¯µØ±»¸³Öµ£¬±ØÐë×Ô¼ºÔÚFORMÖбàд´úÂëÀ´Íê³ÉÕâÏ×÷¡£
EBSÖÐÌṩÁËÒ»¸öº¯ÊýFND_STANDARD.SET_WHO£¬´ó¼ÒÖ»ÒªÔÚFORMµÄBLOCK¼¶´¥·¢Æ÷PRE-INSERT/PRE-UPDATEÖнøÐе÷Óü´¿É¡£

3)¶ÔÓÚÒµÎñÊý¾Ý±í£¬Òª¿¼Âǽ¨Á¢15¸öµ¯ÐÔÓò×ֶΣ»
4)Èç¹û¶ÔÓÚÐèÒª²¢·¢ÇëÇó´¦Àí¹ýµÄÊý¾Ý±í£¬ÔòÐèÒªÔö¼Ó¸ú×ÙÇëÇóµÄ4¸ö×Ö¶Î
REQUEST_ID NUMBER
PROGRAM_APPLICATION_ID NUMBER
PROGRAM_ID NUMBER
PROGRAM_UPDATE_DATE DATE
5)Òª¿¼ÂÇÕâ¸ö±íÊÇ·ñÇø·ÖOUºÍ¿â´æ×éÖ¯£»

Áù¡¢ÔÚFORM¿ª·¢Öв»¹ÜÊÇFORM¼¶»¹ÊÇBLOCK¼¶»òÕßITEM¼¶µÄTRIGGER£¬²»Òª°Ñ´úÂëÖ±½Óдµ½TRIGGERÖУ¬ÒªÊ¹ÓÃPROGRAM UNITÀ´´´½¨ÏàÓ¦µÄTRIGGER£¬¾ÙÀýÈçÏ£º

FORM¼¶ºÍBLOCK¼¶¿ÉÒÔ°´ÕÕÏÂÃæ¸ñʽÔÚPROGRAM UNITÖд´½¨PACKAGE£º
PACKAGE BODY FORM_NAME/BLOCK_NAME IS
PROCEDURE EVENT_HANDLER( EVENT IN VARCHAR2)
IS
BEGIN
IF EVENT = 'WHEN-NEW-FORM-INSTANCE' THEN
XXXXXXXX;
ELSIF EVENT = 'PRE-FORM' THEN
XXXXXXXX;
ELSE
APP_EXCEPTION.INVALID_ARGUMENT('EVENT_HANDLER', 'EVENT', EVENT);
END IF;
END EVENT_HANDLER;
END FORM_NAME/BLOCK_NAME;
ITEM¼¶µÄ¿ÉÒÔ°´ÕÕÏÂÃæµÄ¸ñʽ£º
PACKAGE BODY BLOCK_NAME IS
PROCEDURE ITEM_NAME( EVENT IN VARCHAR2)
IS
BEGIN
IF EVENT = 'WHEN-NEW-ITEM-INSTANCE' THEN
XXXXXXXX;
ELSE
APP_EXCEPTION.INVALID_ARGUMENT('ITEM_NAME', 'EVENT', EVENT);
END IF;
END ITEM_NAME;
END BLOCK_NAME;

Æß¡¢ÔÚEBSÈç¹ûҪʹÓõ¯ÐÔÓò»òÔ¤¾¯µÈ£¬Ôò±ØÐëÔÚEBS×¢²áTABLE¼°COLUMN¡£

´Ë×¢²á¹¦ÄÜÊÇͨ¹ýµ÷ÓÃAD_DDº¯Êý°üÀ´ÊµÏֵģº
AD_DD.REGISTER_TABLE ×¢²áTABLE
AD_DD.REGISTER_COLUMN ×¢²áCOLUMN
AD_DD.DELETE_TABLE È¡Ïû×¢²áTABLE
AD_DD.DELETE_COLUMN È¡Ïû×¢²áCOLUMN


29 03, 2007

oracle ERPµÄ£Ó£Ñ£Ì½Å±¾

¿â´æ»õλÁбí.sql
select inventory_location_id,organization_id,description,subinventory_code,segment1 inventory_location_code from MTL_ITEM_LOCATIONSorder by subinventory_code,inventory_location_code

¿â´æ»á¼ÆÆÚ¼ä
SELECT STATUS,PERIOD_NAME,PERIOD_NUMBER,PERIOD_YEAR,START_DATE,END_DATE,CLOSE_DATE,REC_TYPE,
ORGANIZATION_ID
FROM ORG_ACCT_PERIODS_V
WHERE ((rec_type = 'ORG_PERIOD' ))
order by END_DATE desc

¿â´æ×éÖ¯Áбí
select a.organization_id,a.name
FROM hr_all_organization_units a
where a.organization_id>82

ÊÂÎï´¦Àí»î¶¯Áбí

select * from mfg_lookups where lookup_type='MTL_TRANSACTION_ACTION'
ORDER BY LOOKUP_CODE

ÊÂÎï´¦ÀíÀ´Ô´ÀàÐÍÁбí

SELECT TRANSACTION_SOURCE_TYPE_NAME,DESCRIPTION,VALIDATED_FLAG,
TRANSACTION_SOURCE_TYPE_ID,USER_DEFINED_FLAG,DISABLE_DATE
FROM MTL_TXN_SOURCE_TYPES
WHERE USER_DEFINED_FLAG = 'N'
order by transaction_source_type_name

½ÓÊÕÊÂÎï´¦Àí

SELECT t.po_header_id, t.po_line_id, t.po_release_id,
SUM (DECODE (t.transaction_type,
'DELIVER', t.quantity,
'RETURN TO RECEIVING', DECODE (t.destination_type_code,
'INVENTORY', -t.quantity,
'EXPENSE', -t.quantity,
0
),
'CORRECT', DECODE (t.destination_type_code,
'INVENTORY', t.quantity,
'EXPENSE', t.quantity,
0
),
0
)
) deliver_qtya,
SUM ( t.po_unit_price
* t.currency_conversion_rate
* DECODE (t.transaction_type,
'DELIVER', t.quantity,
'RETURN TO RECEIVING', DECODE
(t.destination_type_code,
'INVENTORY', -t.quantity,
'EXPENSE', -t.quantity,
0
),
'CORRECT', DECODE (t.destination_type_code,
'INVENTORY', t.quantity,
'EXPENSE', t.quantity,
0
),
0
)
) deliver_amount,
SUM (DECODE (t.transaction_type,
'RECEIVE', t.quantity,
'RETURN TO VENDOR', -t.quantity,
'CORRECT', DECODE (t.destination_type_code,
'RECEIVING', t.quantity,
0
),
0
)
) receive_qtya,
SUM ( t.po_unit_price
* t.currency_conversion_rate
* DECODE (t.transaction_type,
'RECEIVE', t.quantity,
'RETURN TO VENDOR', -t.quantity,
'CORRECT', DECODE (t.destination_type_code,
'RECEIVING', t.quantity,
0
),
0
)
) receive_amount,
t.unit_of_measure, rsl.item_id, rsl.item_revision,
rsl.item_description, g.period_year, g.period_number,
rsl.from_organization_id
FROM po.rcv_transactions t,
apps.org_acct_periods_v g,
apps.rcv_shipment_lines rsl
WHERE ( t.transaction_type = 'DELIVER'
OR t.transaction_type = 'RETURN TO RECEIVING'
OR t.transaction_type = 'CORRECT'
OR t.transaction_type = 'RECEIVE'
OR t.transaction_type = 'RETURN TO VENDOR'
)
AND t.organization_id = g.organization_id
AND TO_DATE (TO_CHAR (t.transaction_date, 'YYYY-MM-DD'), 'YYYY-MM-DD')
BETWEEN g.start_date
AND g.end_date
AND g.rec_type = 'ORG_PERIOD'
AND rsl.shipment_line_id = t.shipment_line_id
GROUP BY t.po_header_id,
t.po_line_id,
t.po_release_id,
t.unit_of_measure,
rsl.item_id,
rsl.item_revision,
rsl.item_description,
g.period_year,
g.period_number,
rsl.from_organization_id

½ÓÊÕÇøÊýÁ¿½ð¶î


select
/* commented and added following line for 2245286
nvl( PPP.costing_group_id, 1 ) cost_group_id, */
nvl( PPP.costing_group_id, MP.default_cost_group_id) cost_group_id,
MS.item_id inventory_item_id,
msi.description,msi.segment1,
RCV.po_unit_price item_cost,
MS.to_org_primary_quantity RCVQTY,
MS.to_org_primary_quantity *
( RCV.po_unit_price + CSTPPACQ.get_rcv_tax( RCV.transaction_id ) ) *
nvl( decode( nvl(POLL.match_option,'P'),
'P', CSTPPACQ.get_po_rate( RCV.transaction_id ),
'R', RCV.currency_conversion_rate), 1 ) *
( RCV.source_doc_quantity / RCV.primary_quantity ) RCVVAL,
RCV.po_unit_price,
CSTPPACQ.get_rcv_tax( RCV.transaction_id ) dddd,
POLL.match_option,
CSTPPACQ.get_po_rate( RCV.transaction_id ) fffff,
RCV.currency_conversion_rate,
rcv.currency_code,
rcv.currency_conversion_type,
RCV.source_doc_quantity,
RCV.primary_quantity,
CIC.cost_type_id,
CIC.inventory_asset_flag
from
mtl_supply MS,
cst_item_costs CIC,
rcv_transactions RCV,
po_line_locations_all POLL,
po_lines_all POL,
pjm_project_parameters PPP
,mtl_parameters MP
,inv.mtl_system_items_b MSI /* added for 2245286 */
where
MS.supply_type_code = 'RECEIVING' AND
CIC.organization_id = MS.to_organization_id AND
CIC.inventory_item_id (+) = MS.item_id AND
RCV.transaction_id = MS.rcv_transaction_id AND
RCV.source_document_code not in ('INVENTORY, REQ') AND
POLL.line_location_id = RCV.po_line_location_id AND
POL.po_line_id = RCV.po_line_id AND
PPP.project_id (+) = POL.project_id and
MS.to_organization_id = &P_ORG_ID AND
MP.organization_id = &P_ORG_ID and
ms.item_id = msi.inventory_item_id

order by msi.segment1

½ÓÊÕµ¥Áбí

SELECT rt.transaction_id, rt.transaction_type rt_transaction_type,
rt.quantity rt_quantity, rt.quantity_billed rt_quantity_billed,
rt.inspection_status_code rt_inspection_status_code,
rt.inspection_quality_code rt_inspection_quality_code,
rt.destination_type_code rt_destination_type_code,
poh.po_header_id,
poh.segment1,
pol.line_num, pol.line_type_id, pol.item_description,
pol.unit_meas_lookup_code, pol.list_price_per_unit, pol.unit_price,
pol.quantity, pol.qty_rcv_tolerance, pol.closed_code, rsh.receipt_num,
rsl.line_num, rsl.quantity_shipped, rsl.quantity_received,
rsl.shipment_line_status_code, rsl.source_document_code,
rsl.destination_type_code, rsl.asn_line_flag
FROM PO.rcv_transactions rt,
PO.rcv_shipment_headers rsh,
PO.rcv_shipment_lines rsl,
PO.po_headers_all poh,
PO.po_lines_all pol
WHERE rsh.shipment_header_id = rt.shipment_header_id
AND rsl.shipment_line_id = rt.shipment_line_id
AND poh.po_header_id(+) = rt.po_header_id
AND pol.po_line_id(+) = rt.po_line_id
AND EXISTS(SELECT * FROM APPS.po_lookup_codes plc1 WHERE plc1.lookup_type = 'RCV TRANSACTION TYPE'
AND rt.transaction_type = plc1.lookup_code)
AND EXISTS(SELECT * FROM APPS.po_lookup_codes plc1 WHERE plc1.lookup_type = 'SHIPMENT SOURCE TYPE'
AND rsh.receipt_source_code = plc1.lookup_code)
AND EXISTS(SELECT * FROM APPS.po_lookup_codes plc1 WHERE plc1.lookup_type = 'RCV DESTINATION TYPE'
AND rt.destination_type_code = plc1.lookup_code)
AND EXISTS(SELECT * FROM APPS.po_lookup_codes plc1 WHERE plc1.lookup_type = 'SHIPMENT SOURCE DOCUMENT TYPE'
AND rt.source_document_code = plc1.lookup_code)

´Ó×ÜÕÊ×·Ëݵ½½ÓÊÕ

SELECT je_header_id, je_line_num, trx_class_name, trx_type_name, trx_number_displayed, trx_date,
comments, doc_sequence_name, doc_sequence_value, acct_line_type_name,
currency_code, entered_dr, entered_cr, accounted_dr, accounted_cr,
taxable_entered_dr, taxable_entered_cr, taxable_accounted_dr,
taxable_accounted_cr, currency_conversion_date,
currency_user_conversion_type, currency_conversion_rate,
third_party_name, third_party_number, third_party_sub_name,
accounting_date, gl_transfer_status_name, transfer_system_name,
gl_transfer_from_to_name, accounting_complete_name,
ae_line_reference, tax_code, accounting_rule_name, tax_exempt_number,
trx_line_type_name, trx_line_number, trx_detail_line_number,
trx_quantity, sales_order_number, salesrep_name, tax_rate,
unit_selling_price, trx_uom, trx_source_name, asset_number,
asset_description, asset_book_type_code, accounting_event_number,
accounting_event_type, accounting_event_type_name,
accounting_line_number, aeh_accounting_error_name,
ael_accounting_error_name, user_je_category_name,
transfer_status_detail_name, application_date,
applied_to_trx_hdr_currency, applied_to_trx_hdr_date,
applied_to_trx_hdr_id, applied_to_trx_hdr_number_c,
applied_to_trx_hdr_number_disp, applied_to_trx_hdr_table,
applied_to_trx_line_number, applied_to_trx_line_type,
applied_to_trx_line_type_name, ar_activity_name,
ar_adjustment_creation_type, ar_adjustment_type, bank_account_name,
bank_statement_doc_seq_id, bank_statement_doc_seq_name,
bank_statement_doc_seq_value, bank_statement_line_number,
bank_statement_number, bom_department_code, bom_department_name,
chargeback_number, cost_element_id, cost_element_name,
distribution_set_name, gl_batch_id, inventory_item_locator_id,
inventory_item_locator_name, inventory_item_revision,
item_description, inventory_organization_code,
inventory_organization_id, cost_type_id, cost_type_name,
mfg_operation_seq_num, payment_cleared_date, payment_date,
payment_deposit_date, payment_number, payment_recon_currency,
po_line_num, po_order_number, po_order_release_num, price_override,
po_order_shipment_num, po_order_distribution_num, po_order_type,
rcv_receipt_num, rcv_shipment_header_id, reversal_comments,
reversal_date, subinventory, trx_hdr_currency, trx_reason_name,
trx_source_type_id, trx_source_type_name, unit_cost, unit_price,
wip_assembly, wip_basis, wip_flow_sched