MySQL: एक संग्रहित प्रक्रिया में कई क्षेत्रों को कई चर में चुनना


106

क्या मैं MySQL में एक ही चयनित क्वेरी के भीतर कई चर में कई कॉलम का चयन कर सकता हूं?

उदाहरण के लिए:

DECLARE iId INT(20);
DECLARE dCreate DATETIME;

SELECT Id INTO iId, dateCreated INTO dCreate 
FROM products
WHERE pName=iName;

इसके लिए सही सिंटैक्स क्या है?

जवाबों:


220

आपका सिंटैक्स सही नहीं है: आपको INTO से पहले फ़ील्ड को सूचीबद्ध करने की आवश्यकता है, और उसके बाद संबंधित लक्ष्य चर:

SELECT Id, dateCreated
INTO iId, dCreate
FROM products
WHERE pName = iName

6
+1। यह एक ऐसा मामला है जहां टी-एसक्यूएल सिंटैक्स स्पष्ट है। इन्हें अलग-अलग सूचियों के रूप में रखने से DECLARE CURSOR और FETCH के रूप में एक ही रखरखाव की समस्या होती है (ऐसा नहीं है कि मैं, उह, कभी भी उन का उपयोग करता हूं)।
19

Pl / Sql के लिए भी।
अनिकेत ठाकुर

11

========== सलाह ==========

@ स्मार्टिन क्लेटन उत्तर सही है, लेकिन यह केवल एक सलाह है।

कृपया संग्रहीत कार्यविधि में अस्पष्ट चर के उपयोग से बचें।

उदाहरण :

SELECT Id, dateCreated
INTO id, datecreated
FROM products
WHERE pName = iName

उपरोक्त उदाहरण के कारण त्रुटि होगी (शून्य मान त्रुटि)

नीचे दिया गया उदाहरण सही है। मुझे उम्मीद है कि यह समझ में आएगा।

उदाहरण :

SELECT Id, dateCreated
INTO val_id, val_datecreated
FROM products
WHERE pName = iName

आप तालिका को संदर्भित करके भी उन्हें अस्पष्ट बना सकते हैं, जैसे:

[ साभार : मगनप ]

SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p 
WHERE pName = iName

आप तालिका को संदर्भित करके भी उन्हें असंदिग्ध बना सकते हैं, जैसे:SELECT p.Id, p.dateCreated INTO id, datecreated FROM products p WHERE pName = iName
मगनाप

2

वैकल्पिक रूप से मार्टिन के उत्तर के लिए, आप क्वेरी को अधिक पठनीय बनाने के लिए क्वेरी के अंत में INTO भाग भी जोड़ सकते हैं:

SELECT Id, dateCreated FROM products INTO iId, dCreate

@KusalDissanayake MySQL के लिए प्रश्न पूछा गया था
ibai
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.