Oracle 9i ÖÐmergeµÄÎÊÌâ
ÇóÎÊ£º9iÖÐÖ»Ïë¸üв»Ïë²åÈëÔõôд£¿
MERGE INTO user p
USING TEMP tp
ON (p.TYPE = tp.TYPE)
WHEN MATCHED THEN
UPDATE SET p.SYS_NAME= tp.SYS_NAME
WHEN NOT MATCHED THEN
INSERT ()
VALUES (£©
ÕâÑùд¿Ï¶¨²»¶Ô
È¥µôWHEN NOT MATCHED THEN Ò²²»¶Ô£¬
ÄÄλ´ó¸çÓкõİ취£¿
Õâ¸öÎÊÌâÆðÔ´£ºÎÒÏë²åÈëÊý¾Ý£¬Èç¹û
1¡¢TYPE ²»Öظ´Ôò²åÈë
2¡¢TYPE ÖØ¸´µÄ »¹Òª¿´ ÁíÒ»¸ö×Ö¶Î ¡°op¡± Èç¹ûopÓÐÖµ Ôò²»½øÐвÙ×÷
3¡¢Èç¹ûopûֵÔò½øÐиüÐÂ
Èç¹ûÊÇ10g¾Í¼òµ¥ÁËÖ±½Ó where ¾ÍÐÐÁË ¿ÉÁ¯µÄÊǿͻ§µÄÊÇ9i Çë¸ßÊִͽÌ
Oracle merge into µÄÓ÷¨Ïê½âʵÀý
×÷Óãºmerge into ½â¾öÓÃB±í¸úÐÂA±íÊý¾Ý£¬Èç¹ûA±íÖÐûÓУ¬Ôò°ÑB±íµÄÊý¾Ý²åÈëA±í£»
Óï·¨£º
MERGE INTO [your table-name] [rename your table here]
USING ( [write your query here] )[rename your query-sql and using just like a table]
ON ([conditional expression here] AND [...]...)
WHEN MATHED THEN [here you can execute some update sql or something else ]
WHEN NOT MATHED THEN [execute something else here ! ]
-------ʵÀý-------
merge into a
using (select id,name from b ) c
on(a.id=c.id )
when matched then update set a.name=c.name
when not matched then insert (a.id,a.name) values (c.id,c.name);
×÷ÓãºÀûÓñí b ¸úбía £¬Ìõ¼þÊÇa.id=b.id£¬Èç¹ûa±íÖÐûÓиÃÌõ¼þµÄÊý¾Ý¾Í²åÈë¡
Ïà¹ØÎÊ´ð£º
¸÷´óÀÏʦºÃ£¬Çë½ÌÒ»¸öÎÊÌ⣮
ÎÒÉèÖÃÁËÒ»¸öoracle×ֶΣ¬varchar(3000),È»ºó²åÈëÒ»ÌõÊý¾Ý³¤¶È²Å1000,¾Í±¨´íÁË£®È磺net.sf.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
Caused ......
ÒÔǰ³ÌÐòºÃºÃµÄ,ÄܽøÐÐÈκβÙ×÷
µ«´Ó×òÌ쿪ʼͻȻÁ¬½ÓÊý¾Ý¿âʧ°Ü,´úÂëÈçÏÂ:
try
{
::CoInitialize(NULL);
hr=m_pConnection.Creat ......
ÏÖÔÚÓÐÒ»ORACLEÖеÄSQLÓï¾ä£¬ÐèÒªÒÆÖ²µ½DB2ÖУ¬ÇëÎʸÃSQL¸ÄÈçºÎд
ORACLEÖУº
select floor(months_between(date1,date2)) from A
date1,date2·Ö±ðΪ±íÖеÄÁ½¸ö×Ö¶Î £¬¶¼ÎªÈÕÆÚÐÍ
DB2ÖÐÈçºÎʹÓÃÐ ......
ÏÖÓÐÒÔÏÂÊý¾Ý£º
ID Name
1 Jack,Tom,Ben
2 Mary,Simth,Tony,Jay
ת»»Îª£º
ID Name
1 Jack
1 Tom
1 Ben
2 Mary
2 Simth
2 Tony
2 Jay
ÒªÇóʹÓÃSQL²éѯÍê³É£¬ÓÉÓÚÌõ¼þÏÞÖÆ£¬²»ÄÜʹÓà ......