Oracle Sql¼¼ÇÉ Upsert, Multitable Insert, Undrop
UpSert¹¦ÄÜ£º
MERGE <hint> INTO <table_name>
USING <table_view_or_query>
ON (<condition>)
WHEN MATCHED THEN <update_clause>
WHEN NOT MATCHED THEN <insert_clause>;
MultiTable Inserts¹¦ÄÜ£º
Multitable inserts allow a single INSERT INTO .. SELECT statement to conditionally, or non-conditionally, insert into multiple tables. This
statement reduces table scans and PL/SQL code necessary for performing multiple conditional inserts compared to previous versions. It's
main use is for the ETL process in data warehouses where it can be parallelized and/or convert non-relational data into a relational format:
-- Unconditional insert into ALL tables
INSERT ALL
INTO sal_history VALUES(empid,hiredate,sal)
INTO mgr_history VALUES(empid,mgr,sysdate)
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
from employees WHERE employee_id > 200;
-- Pivoting insert to split non-relational data
INSERT ALL
INTO Sales_info VALUES (employee_id,week_id,sales_MON)
INTO Sales_info VALUES (employee_id,week_id,sales_TUE)
INTO Sales_info VALUES (employee_id,week_id,sales_WED)
INTO Sales_info VALUES (employee_id,week_id,sales_THUR)
INTO Sales_info VALUES (employee_id,week_id, sales_FRI)
SELECT EMPLOYEE_ID, week_id, sales_MON, sales_TUE,
sales_WED, sales_THUR,sales_FRI
from Sales_source_data;
-- Conditionally insert into ALL tables
INSERT ALL
WHEN SAL>10000 THEN
INTO sal_history VALUES(EMPID,HIREDATE,SAL)
WHEN MGR>200 THEN
INTO mgr_history VALUES(EMPID,MGR,SYSDATE)
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
from employees WHERE employee_id > 200;
-- Insert into the FIRST table with a matching condition
INSERT FIRST
WHEN SAL > 25000THEN
INTO special_sal VALUES(DEPTID,SAL)
WHEN HIREDATE like ('%00%') THEN
INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)
WHEN HIREDATE like ('%99%') THEN
INTO hiredate_history_99 VALUES(DEPTID,HIREDATE)
ELSE
INTO hiredate_hi
Ïà¹ØÎĵµ£º
¼ÙÉèÓÐÕÅ±í£¬½Ðtable1£¬ÀïÃæÓÐ5000ÍòÐÐÊý¾Ý£¬¼ÙÉèÔ¤¼ÆÈ«±íɨÃè1´ÎÐèÒª1¸öСʱ£¬ÎÒÃÇ´Ó¹ý³ÌÀ´¿´£º
1¡¢ÔÚ1µãÖÓ£¬ÓиöÓû§A·¢³öÁËselect * from table1;´Ëʱ²»¹Ü½«À´table1Ôõô±ä»¯£¬ÕýÈ·µÄ½á¹ûÓ¦¸ÃÊÇÓû§A»á¿´µ½ÔÚ1µãÖÓÕâ¸öʱ¿ÌµÄÄÚÈÝ¡£Õâ¸öÊÇûÓÐÒÉÎʵġ£
2¡¢ÔÚ1µã30·Ö£¬ÓиöÓû§BÖ´ÐÐÁËupdateÃüÁ¸üÐÂÁËtable1±íÖеĵ ......
oracle startupʱ ±¨´íORA-00600: ÄÚ²¿´íÎó´úÂ룬²ÎÊý: [kcratr1_lostwrt], [], [], [], [], [], [], []
ÔÒò¿ÉÄÜÊÇ·Ç·¨¹Ø»ú»òµôµçÔì³É,ÒÔÏÂÊdzöÏÖµÄÎÊÌâ¼°½â¾ö·½·¨:
C:\Documents and Settings\Administrator>sqlplus
ÇëÊäÈëÓû§Ãû: /as sysdba
SQL> startup
ORA-01081: ÎÞ·¨Æô¶¯ÒÑÔÚÔËÐÐµÄ ORACLE ......
ÍøÉÏÓкܶàµÄ×ÊÁÏ£¬²Î¿¼itput£¨http://space.itpub.net/471666/viewspace-215923£©µÄ¡£
OS : Redhat
DB : Oracle 10.2.0.4.0
1.ÐÞ¸Äjdk ÏÂÃæµÄ×ÖÌå¡£
[oracle@a ~]$ cd $ORACLE_HOME/jdk/jre/lib/
[oracle@a ~]]$ mv font.properties font.properties_bak
[oracle@a ~]]$
[oracle@a ~]]$ cp font.properties.zh_CN.R ......
http://tech.163.com/05/0701/10/1NIODMQS00091589.html
ÒòΪÔÚPL/SQL Öв¢Ã»ÓÐÊý×é.
ÕâÊÇż²é×ÊÁÏÕҵķ¶ÀýºÍ×Ô¼ºÐ´µÄ·¶ÀýÀ´½âÊÍÈçºÎÔÚPL/SQL ÖÐʹÓÃÊý×é. Ò²ÐíºÜ¶àÈËÒÑÖªµÀ, ²»¹ý¾ÍÊÇÈò»ÖªµÀµÄÅóÓÑÃÇÁ˽âһϰɡ£
----------------------
µ¥Î¬Êý×é
------------------------
DECLARE
TYPE
emp_ssn_array IS TA ......
--------------------------------²éѯϵͳ¿âÖÐÊÇ·ñÓп⣨Óпâ¾Íɾ³ý´Ë¿â£©----------------------------------------------------
use master
if exists(select * from databases where name='¿âÃû')
drop database ¿âÃû
__________________________ ½¨Êý¾Ý¿â½¨±íµÄ»ù±¾¸ñʽ __________________ ......