2011-01-26 7 views
6

पीएल/एसक्यूएल में आप TABLE.COLUMN_NAME% प्रकार सिंटैक्स का उपयोग कर प्रक्रिया चर और तर्क के लिए तालिका कॉलम के प्रकार का संदर्भ दे सकते हैं। यह कोड रखरखाव बहुत आसान बनाता है। क्या MySQL संग्रहित प्रक्रिया भाषा में इसके बराबर है?माईस्कल संग्रहीत प्रक्रिया कॉलम प्रकार संदर्भ

किसी को इसकी आवश्यकता हो सकती है?

INSERT INTO NL_LIST (NAME, EMAIL) 
    SELECT 
     NAME, 
     normalizeEmail(EMAIL) 
    FROM 
     RAW_NL_LIST; 

इसके लिए मैं (लगभग) निम्नलिखित तरीके से normalizeEmail परिभाषित करने में सक्षम होना चाहते हैं:

CREATE FUNCTION normalizeEmail(email RAW_NL_LIST.EMAIL%type) 
RETURNS NL_LIST.EMAIL%type 
BEGIN 
... implementation here 
END; 
+0

किस संदर्भ में आप तालिकाओं में स्तंभ संदर्भित कर रहे हैं? क्या आप एक प्रश्न का उदाहरण दे सकते हैं जहां आप ऐसा करेंगे? – TehShrike

+0

अवधारणा के स्पष्टीकरण के लिए http://www.dba-oracle.com/plsql/t_plsql_var_const.htm देखें। –

+0

यदि आप कोई प्रक्रिया लिखते हैं, तो संभावना है कि आपको कुछ चर घोषित करने की आवश्यकता है। ये बदले में, ज्यादातर टेबल कॉलम से इनपुट लेते हैं। यह सुनिश्चित करने के लिए कि आपके चर का प्रकार आपूर्ति किए गए कॉलम मान के साथ संगत है, आप तालिका कॉलम के प्रकार पर चर आधार घोषित करने के लिए उपर्युक्त वाक्यविन्यास का उपयोग कर सकते हैं। पीएल/एसक्यूएल प्रोग्रामिंग करते समय इसे सबसे अच्छा अभ्यास माना जाता है। मेरा सवाल यह था कि MySQL में एक ही तरह की चीज संभव है। –

उत्तर

4

नहीं, आप स्वचालित रूप से में इस्तेमाल किया प्रकार से मेल नहीं कर सकते हैं निम्नलिखित डालने बयान पर विचार करें एक संग्रहित प्रक्रिया में प्रकार के साथ तालिका परिभाषा। आपको टेबल परिभाषा को स्वयं देखना होगा और सही प्रकार दर्ज करना होगा।

देखें: http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html

यहाँ यह कहते हैं:

CREATE 
[DEFINER = { user | CURRENT_USER }] 
PROCEDURE sp_name ([proc_parameter[,...]]) 
[characteristic ...] routine_body 

CREATE 
    [DEFINER = { user | CURRENT_USER }] 
    FUNCTION sp_name ([func_parameter[,...]]) 
    RETURNS type 
    [characteristic ...] routine_body 

proc_parameter: 
    [ IN | OUT | INOUT ] param_name type 

func_parameter: 
    param_name type 

type: 
    Any valid MySQL data type <<<-- no special magic allowed 

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