2012-01-12 16 views
5

की एक MySQL संस्करण ओरेकल में है, अगर मैं एक और स्तंभ के रूप में एक ही प्रकार के साथ कुछ घोषित करने के लिए की जरूरत है, मैं बस %type उपयोग कर सकते हैं:वहाँ Oracle की% प्रकार

Create table foo(
    copiedType OTHER_TABLE.COLUMN_NAME%TYPE 
    /* yada yada yada... */ 

वहाँ MySQL में एक बराबर ऑपरेटर है?

+0

मुझे नहीं लगता कि यह MySQL में संभव है। –

+0

@EmmanuelN हाँ ... मैंने ऐसा नहीं सोचा था। आप जानते हैं, ओरेकल सही नहीं है, लेकिन इसमें कुछ नस्लों हैं जो MySQL की कमी है। (उस ने कहा, PostGreSQL दोनों दुनिया में सबसे अच्छा है, लेकिन मुझे उस डीबी से प्यार है) – cwallenpoole

उत्तर

2

ठीक है, संक्षिप्त उत्तर, के रूप में यह पता चला है यह कर सकते हैं "नहीं", और जब तक है अगर आप एक संग्रहीत फ़ंक्शन (या किसी अन्य भाषा का उपयोग करें) बनाने के इच्छुक हैं और अपनी खुद की कस्टम बेक्ड पार्सिंग इंजन द्वारा अपनी तालिका बनाएं, तो यह केवल इसके लायक नहीं है। C'est सीरा ...

0

जब तक मैं कुछ MySQL में ओरेकल %type लिए एकमात्र विकल्प याद आ रही है वह इस प्रकार है,

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name'; 
+0

जो मुझे पूरा यकीन है कि आप 'CREATE तालिका' कथन के भीतर उपयोग नहीं कर सकते हैं। – Mchl

+0

@ डेनिस मुझे पता है कि कॉलम प्रकार कैसे प्राप्त करें, लेकिन क्योंकि मैं स्कीमा अखंडता (सोच खतरनाक है) के बारे में सोचना नहीं चाहता हूं, इसलिए मैं कुछ वैरिएबल घोषणा या कॉलम परिभाषा में उपयोग कर सकता हूं। – cwallenpoole

+0

@cwallenpoole समझने योग्य। सिद्धांत रूप में आप एक ऐसी प्रक्रिया बनाने में सक्षम होना चाहिए जो उपर्युक्त आउटपुट को एक चर में संग्रहीत करता है और उसके बाद उस तालिका को बनाने के लिए कहा गया चर का उपयोग करता है जिसे आप बनाने का प्रयास कर रहे हैं। मैंने यह कोशिश नहीं की है, हालांकि यह सुनिश्चित नहीं कर सका कि यह काम करेगा। –

-1

आप इस

SET @field_type = (select DATA_TYPE from INFORMATION_SCHEMA.columns 
        where TABLE_NAME='users' and COLUMN_NAME='name'); 

की तरह प्रक्रियाओं में इसका उपयोग कर सकते हैं और फिर आप आसानी से @field_type चर का उपयोग कर सकते हैं।

+0

जैसा कि मेरे उत्तर में बताया गया है, आप 'CREATE तालिका 'वाक्यविन्यास के हिस्से के रूप में किसी अन्य प्रकार के आधार पर एक चर टाइप नहीं कर सकते हैं। एक चर में इसका उपयोग करने के लिए लगभग इतना उपयोगी नहीं है – cwallenpoole