Oracle का उपयोग करके INTO का चयन करें


134

मैं ओरेकल का उपयोग करके एक चयन करने की कोशिश कर रहा हूं। मेरी क्वेरी है:

SELECT * INTO new_table FROM old_table;

लेकिन मुझे निम्नलिखित त्रुटि मिलती है:

SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"

किसी भी विचार क्या गलत है?


ऊपर का मानक व्यवहार जैसा कि मैंने मूल रूप से सोचा था: ओरेकल ने इसे एसक्यूएल ओरेकल डॉक्स की अपनी बोली में पूरी तरह से अलग तरीके से लागू किया है ... चयन करें


3
select intoएक नई तालिका बनाने के लिए मानक का हिस्सा नहीं है । चयन के आधार पर तालिका बनाने के लिए SQL मानक है create table .. as select ...। SQL मानक SELECT INTOको एक प्रोग्रामिंग भाषा में एक चर में एक कॉलम मान पढ़ने के लिए परिभाषित किया गया है
a_horse_with_no_name

जवाबों:


282

यदि NEW_TABLE पहले से मौजूद है तो ...

insert into new_table 
select * from old_table
/

यदि आप OLD_TABLE में रिकॉर्ड के आधार पर NEW_TABLE बनाना चाहते हैं ...

create table new_table as 
select * from old_table
/

यदि उद्देश्य एक नई लेकिन खाली तालिका बनाना है, तो ऐसी शर्त के साथ WHERE क्लॉज का उपयोग करें, जो कभी सच नहीं हो सकता है:

create table new_table as 
select * from old_table
where 1 = 2
/

याद रखें कि सृजन तालिका ... एएस चयन सही स्रोत तालिका के समान प्रक्षेपण के साथ केवल एक तालिका बनाता है। नई तालिका में कोई बाधा, ट्रिगर या इंडेक्स नहीं है जो मूल तालिका में हो सकता है। उन्हें अभी भी मैन्युअल रूप से जोड़ा जाना है (यदि वे आवश्यक हैं)।


18
+1 @Robert: इसके अलावा, यदि आप पुराने_ की स्कीमा की प्रतिलिपि बनाना चाहते हैं, तो एक नकारात्मक का उपयोग करें, जहाँ उदाहरण के लिए खंड, जैसे: new_table को पुराने के रूप में चयन करें * पुराने _table 1 = 2 से।
केएमएन

31

select intoक्षेत्र मानों के लिए एक चर सेट करने के लिए pl / sql में उपयोग किया जाता है। इसके बजाय, उपयोग करें

create table new_table as select * from old_table

हालाँकि मैं SELECT INTO मानक का हिस्सा था। क्या ओरेकल ने यहां कुछ अजीब किया या क्या यह कभी मानक का हिस्सा नहीं था?
रॉबर्ट गोल्ड

3
select intopl / sql का हिस्सा है। यह संग्रहीत प्रक्रियाओं को लिखने के लिए एक भाषा है और इसका sql मानक से कोई सीधा संबंध नहीं है। और हाँ, ओरेकल ने कई चीजें बनाईं जो कभी भी मानक का हिस्सा नहीं थीं =)
रोरिक

2
@RobertGould: नहीं, SELECT INTO है नहीं मानक SQL। मानक केवल परिभाषित करता हैcreate table .. as select ..
a_horse_with_no_name

चयन में मानक SQL का हिस्सा है w3schools.com/sql/sql_select_into.asp देखें मानक SQL Oracle के कई अन्य भागों की तरह ही अपनी बात करता है।
ग्रैहम हैंसन

2
@grahamhanson जो कि W3Schools ट्यूटोरियल साइट का लिंक प्रतीत होता है, ANSI मानकों के दस्तावेज़ नहीं।
विलियम रॉबर्टसन

3

उपयोग:

create table new_table_name 
as
select column_name,[more columns] from Existed_table;

उदाहरण:

create table dept
as
select empno, ename from emp;

यदि तालिका पहले से मौजूद है:

insert into new_tablename select columns_list from Existed_table;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.