2011-02-09 18 views
5

मैं एक MySQL तालिका से सभी कॉलम नाम, प्रत्येक कॉलम नाम के माध्यम से लूप प्राप्त करना चाहता हूं और फिर उन कॉलम नामों का उपयोग एक चर के रूप में संग्रहीत प्रक्रिया चला सकता हूं। के प्रभाव से कुछ:mysql, स्तंभ नामों के माध्यम से पुनरावृत्त

colnames = get column names from table 

for each colname 
    if something changed then 
    do something 
    else 
    do something else 

यह SHOW COLUMNS FROM myTable तरह लग रहा है मुझे स्तंभ नाम दे देंगे, लेकिन मैं कैसे एक पाश में स्तंभ नाम मिलेंगे?

मैं मूल एसक्यूएल का उपयोग करके संग्रहीत प्रक्रिया में यह सब करना चाहता हूं। चूंकि मैं अभी भी MySQL की जटिलताओं को सीख रहा हूं, और इससे वास्तव में मेरी परियोजना में मदद मिलेगी। आपकी सहायता के लिए धन्यवाद.

+0

आप क्या एपीआई का उपयोग कर रहे हैं? – trojanfoe

+0

मैं इसे मूल एसक्यूएल के रूप में MySQL वर्कबेंच के भीतर से लिखना चाहता हूं। मैं एक अद्यतन क्वेरी के हिस्से के रूप में कॉलम नाम का उपयोग करने की योजना बना रहा था। – RyanDalton

उत्तर

14

मुझे लगता है कि आप कुछ इस तरह हैं:

DECLARE col_names CURSOR FOR 
    SELECT column_name 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' 
    ORDER BY ordinal_position; 


select FOUND_ROWS() into num_rows; 

SET i = 1; 
the_loop: LOOP 

    IF i > num_rows THEN 
     CLOSE col_names; 
     LEAVE the_loop; 
    END IF; 


    FETCH col_names 
    INTO col_name;  

    //do whatever else you need to do with the col name 

    SET i = i + 1; 
END LOOP the_loop; 
+0

ऐसा लगता है कि मैं वास्तव में क्या कर रहा हूं। बहुत बहुत धन्यवाद! पहला चयन कथन काम करता है, हालांकि, जब मैं "DECLARE col_names CURSOR FOR" जोड़ता हूं, तो मुझे सिंटैक्स त्रुटि के साथ लटका दिया जा रहा है। किसी भी विचार के रूप में क्यों? – RyanDalton

+2

ठीक है! बाहर निकलता है मुझे बस डिलीमीटर बदलने और num_rows, i, col_name घोषित करने की आवश्यकता है और यह बहुत अच्छा काम करता है। बहुत बहुत धन्यवाद! – RyanDalton

+0

आपका स्वागत है =) – user470714

4

आप स्तंभ नाम पाने के लिए INFORMATION_SCHEMA के खिलाफ एक प्रश्न लिख सकते हैं:

SELECT column_name 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' 
    ORDER BY ordinal_position 

स्तंभ नाम तो लौटा दिए जाते हैं एक मेज से कोई भी डेटा होगा बस के रूप में।

+3

मुझे कॉलम नाम देने के लिए यह एक उत्कृष्ट शुरुआत है! उन लोगों को फिर से चलाने के लिए मैं उन्हें एक चर (सूची?) में कैसे रखूंगा? – RyanDalton

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