2012-05-30 17 views
20
insert into OPT (email, campaign_id) values('[email protected]',100) 
where not exists(select * from OPT where (email ="[email protected]" and campaign_id =100)) ; 

Error report: SQL Error: ORA-00933: SQL command not properly ended 00933. 00000 - "SQL command not properly ended" *Cause:
*Action:ओरेकल सम्मिलित नहीं कर बयान मौजूद

कैसे अगर यह Oracle में नहीं मौजूद है करता है एक नई पंक्ति सम्मिलित करने के लिए?

उत्तर

8

पहले से मौजूद किसी अन्य रिकॉर्ड के आधार पर कुछ (ओरेकल में) डालने का सही तरीका MERGE कथन का उपयोग कर है।

कृपया ध्यान दें कि इस सवाल का पहले से ही इतने पर यहाँ उत्तर दिया गया है:

4
insert into OPT  (email,  campaign_id) 
select '[email protected]' as email, 100 as campaign_id from dual MINUS 
select     email,  campaign_id from OPT; 

यदि पहले से ही के साथ एक रिकॉर्ड है [email protected]/100 ओपीटी में, MINUS इस रिकॉर्ड को select '[email protected]' as email, 100 as campaign_id from dual रिकॉर्ड से घटा देगा और कुछ भी डाला नहीं जाएगा। दूसरी ओर, यदि ऐसा कोई रिकॉर्ड नहीं है, तो MINUS कुछ भी घटा नहीं देता है और मान [email protected]/100 डाला जाएगा।

रूप p.marino पहले ही बताया गया है, merge शायद आपकी समस्या के लिए बेहतर (और अधिक सही) समाधान के रूप में यह विशेष रूप से अपने कार्य को हल करने के लिए बनाया गया है।

संबंधित मुद्दे