´¥·¢Æ÷
1.±àдһ¸ö´¥·¢Æ÷ʵÏÖÈçϹ¦ÄÜ£º
¶ÔÐÞ¸ÄÖ°¹¤Ð½½ðµÄ²Ù×÷½øÐкϷ¨ÐÔ¼ì²é£º
a) Ð޸ĺóµÄн½ðÒª´óÓÚÐÞ¸ÄǰµÄн½ð
b) ¹¤×ÊÔöÁ¿²»Äܳ¬¹ýÔ¹¤×ʵÄ10%
c) ĿǰûÓе¥Î»µÄÖ°¹¤²»ÄÜÕǹ¤×Ê
create or replace trigger tr1
after update of sal on emp
for each row
begin
if :new.sal <= :old.sal then
raise_application_error(-20001,'Ð޸ĺóµÄн½ðÒª´óÓÚÐÞ¸ÄǰµÄн½ð');
elsif :new.sal > :old.sal * 1.1 then
raise_application_error(-20002,'¹¤×ÊÔöÁ¿²»Äܳ¬¹ýÔ¹¤×ʵÄ10%');
elsif :old.deptno is null then
raise_application_error(-20003,'ûÓе¥Î»µÄÖ°¹¤²»ÄÜÕǹ¤×Ê');
end if;
end;
2. ÔÚemp±íÉϱàдһ¸ö´¥·¢Æ÷£¬ÊµÏÖÈçϹ¦ÄÜ£º
µ±²åÈë»òɾ³ýµÄÖ°¹¤¼Ç¼ÊôÓÚ10ºÅ²¿ÃÅʱ£¬¼Ç¼Ï²Ù×÷ʱ¼ä,Óï¾äµÄÖÖÀà(²åÈë/ɾ³ý),
ºÍÉæ¼°µÄÔ±¹¤ºÅ
&nbs ......
ÈçºÎʹ±íMTL_RESERVATIONSºÍ±íoe_order_lines_allÖ®¼äµÄÁª½Ó¹ØÏµ?
DEMAND_SOURCE_LINE_ID NUMBER Line ID for demand source.
For Sales Order: OE_ORDER_LINES.LINE_ID
MTL_TRX_SOURCE_TYPES.Transaction_Source_type_id=MTL_REVERSATIONS.Demand_Source_type_id, OE_order_lines_all.Line_id=MTL_REVERSATIONS.Demand_Source_Line_id,£©È»ºóMTL_TRX_SOURCE_TYPES.Transaction_Source_type_Name='Sales Order'
---------------------------------------------------
WSH_DELIVERY_DETAILS.RELEASED_STATUSµÄÒâ義
B Backordered Line failed to be allocated in Inventory
C Shipped Line has been shipped
D Cancelled Line is Cancelled
I Interfaced Line has been shipped and interfaced to Order Management and Inventory
N Not Ready to Release Line is not ready to be released
R Ready to Release Line is ready to be released
S Released to Warehouse Line has been released to Inventory for processing
X Not Applicable Line is not applicable for Pick Release
Y Staged/Pick Confirmed Line has been picked and stag ......
Entered
oe_order_headers_all 1 record created in header table
oe_order_lines_all Lines for particular records
oe_price_adjustments When discount gets applied
oe_order_price_attribs If line has price attributes then populated
oe_order_holds_all If any hold applied for order like credit check etc.
Booked
oe_order_headers_all Booked_flag=Y Order booked.
wsh_delivery_details Released_status Ready to release
Pick Released
wsh_delivery_details Released_status=Y Released to Warehouse (Line has been released to Inventory for processing)
wsh_picking_batches After batch is created for pick release.
mtl_reservations This is only soft reservations. No physical movement of stock
Full Transaction
mtl_material_transactions No records in mtl_material_transactions
mtl_txn_request_headers
mtl_txn_request_lines
wsh_delivery_details Released to warehouse.
wsh_new_deliveries if Auto-Create is Yes then data populated.
wsh_delivery_assignments deliveries get assigned
Pick Confirmed
w ......
²ð·ÖÒ»ÁÐΪ¶àÐеÄÎÊÌâ
±íÊý¾ÝÈçÏÂ
id,name,code
1,abc,c001/c002/c007
2,efg,c001/c003
3,ttt,c008/c010
ÔõôÄÜת»»³É
id,name,code
1,abc,c001
1,abc,c002
1,abc,c007
2,efg,c001
2,efg,c003
3,ttt,c008
3,ttt,c010
SQL> create table h_t(id number ,name varchar2(20),code varchar2(50));±íÒÑ´´½¨¡£
SQL> begin
2 insert into h_t values (1, 'abc', 'c001/c002/c007');
3 insert into h_t values (2, 'efg', 'c001/c003');
4 insert into h_t values (3, 'ttt', 'c008/c010');
5 commit;
6 end;
7 /
PL/SQL ¹ý³ÌÒѳɹ¦Íê³É¡£
SQL> select * from h_t;
ID NAME CODE---------- -------------------- --------------------------------------------------
1 abc c001/c002/c007
2 efg c001/c003
3 ttt c008/c010
SQL> create table h_t_1 as select * from h_t where rownum <1;±íÒÑ´´½¨¡£
SQL> declare
2 l_i number;
3 l_p number;
4 l_times number;
5 l_str varchar2(10);
6 begin
7 for x in (select * from h_t) loop
8 l_i := 1;
9 l_times := length(x.code) - length(replace(x.code, '/', '')) + 1;
......
ͨ¹ýʵÀý¼òÒª½éÉÜcaseº¯ÊýµÄÓ÷¨¡£
1.´´½¨²âÊÔ±í:
¡¡¡¡
¡¡¡¡DROP SEQUENCE student_sequence;
¡¡¡¡CREATE SEQUENCE student_sequence¡¡START WITH 10000¡¡INCREMENT BY 1;
¡¡¡¡
¡¡¡¡DROP TABLE students;
¡¡¡¡CREATE TABLE students (
¡¡¡¡id¡¡¡¡¡¡¡¡¡¡¡¡¡¡ NUMBER(5) PRIMARY KEY,
¡¡¡¡first_name¡¡¡¡¡¡ VARCHAR2(20),
¡¡¡¡last_name¡¡¡¡¡¡¡¡VARCHAR2(20),
¡¡¡¡major¡¡¡¡¡¡¡¡¡¡¡¡VARCHAR2(30),
¡¡¡¡current_credits¡¡NUMBER(3),
¡¡¡¡grade¡¡¡¡¡¡¡¡¡¡¡¡varchar2(2));
¡¡¡¡
¡¡¡¡INSERT INTO students (id, first_name, last_name, major, current_credits,grade)
¡¡¡¡VALUES (student_sequence.NEXTVAL, 'Scott', 'Smith', 'Computer Science', 98,null);
¡¡¡¡
¡¡¡¡INSERT INTO students (id, first_name, last_name, major, current_credits,grade)
¡¡¡¡VALUES (student_sequence.NEXTVAL, 'Margaret', 'Mason', 'History', 88,null);
¡¡¡¡
¡¡¡¡INSERT INTO students (id, first_name, last_name, major, current_credits,grade)
¡¡¡¡VALUES (student_sequence.NEXTVAL, 'Joanne', 'Junebug', 'Computer Science', 75,null);
¡¡¡¡
¡¡¡¡INSERT INTO st ......
30¸öOracleÓï¾äÓÅ»¯¹æÔòÏê½â
1.Ñ¡ÓÃÊʺϵÄOracleÓÅ»¯Æ÷
OracleµÄÓÅ»¯Æ÷¹²ÓÐ3ÖÖ£º
a.RULE(»ùÓÚ¹æÔò)
b.COST(»ùÓڳɱ¾)
c.CHOOSE(Ñ¡ÔñÐÔ)
ÉèÖÃȱʡµÄÓÅ»¯Æ÷£¬¿ÉÒÔͨ¹ý¶Ôinit.oraÎļþÖÐOPTIMIZER_MODE²ÎÊýµÄ¸÷ÖÖÉùÃ÷£¬ÈçRULE¡¢COST¡¢CHOOSE¡¢ALL_ROWS¡¢FIRST_ROWS¡£Ä㵱ȻҲÔÚSQL¾ä¼¶»òÊǻỰ(session)¼¶¶ÔÆä½øÐи²¸Ç¡£
ΪÁËʹÓûùÓڳɱ¾µÄÓÅ»¯Æ÷(CBO£¬Cost-Based Optimizer)£¬Äã±ØÐë¾³£ÔËÐÐanalyzeÃüÁÒÔÔö¼ÓÊý¾Ý¿âÖеĶÔÏóͳ¼ÆÐÅÏ¢(object statistics)µÄ׼ȷÐÔ¡£
Èç¹ûÊý¾Ý¿âµÄÓÅ»¯Æ÷ģʽÉèÖÃΪѡÔñÐÔ(CHOOSE)£¬ÄÇôʵ¼ÊµÄÓÅ»¯Æ÷ģʽ½«ºÍÊÇ·ñÔËÐйýanalyzeÃüÁîÓйء£Èç¹ûtableÒѾ±»analyze¹ý£¬ÓÅ»¯Æ÷ģʽ½«×Ô¶¯³ÉΪCBO£¬·´Ö®£¬Êý¾Ý¿â½«²ÉÓÃRULEÐÎʽµÄÓÅ»¯Æ÷¡£
ÔÚȱʡÇé¿öÏ£¬Oracle²ÉÓÃCHOOSEÓÅ»¯Æ÷£¬ÎªÁ˱ÜÃâÄÇЩ²»±ØÒªµÄÈ«±íɨÃè(full table scan)£¬Äã±ØÐ뾡Á¿±ÜÃâʹÓÃCHOOSEÓÅ»¯Æ÷£¬¶øÖ±½Ó²ÉÓûùÓÚ¹æÔò»òÕß»ùÓڳɱ¾µÄÓÅ»¯Æ÷¡£
2.·ÃÎÊTableµÄ·½Ê½Oracle²ÉÓÃÁ½ÖÖ·ÃÎʱíÖмǼµÄ·½Ê½£º
a.È«±íɨÃè
È«±íɨÃè¾ÍÊÇ˳ÐòµØ·ÃÎʱíÖÐÿÌõ¼Ç¼¡£Oracle²ÉÓÃÒ»´Î¶ÁÈë¶à¸öÊý¾Ý¿é(database block)µÄ·½Ê½ÓÅ»¯È«±íɨÃè¡£
b. ͨ¹ýROWID·ÃÎʱí
Äã¿ÉÒÔ²ÉÓûùÓÚROWIDµÄ·ÃÎÊ·½Ê½Ç ......