6

संग्रहित प्रक्रिया में से संग्रहीत फ़ंक्शन को कॉल करने का प्रयास करते समय मुझे 1064 त्रुटि मिल रही है। यह केवल उस रेखा पर होता है जहां मैं ऐसा करने का प्रयास करता हूं: SET account_id = get_account_id(user);। समस्या क्या है और मैं इसे कैसे ठीक कर सकता हूं?MySql संग्रहीत फ़ंक्शन को संग्रहीत प्रक्रिया के भीतर से कॉल कर रहा है जिससे त्रुटि

खाता आईडी संग्रहित कार्य:

CREATE DEFINER=`aaron`@`%` FUNCTION `get_account_id`(user VARCHAR(255)) RETURNS int(11) 
BEGIN 
    DECLARE xaccount_id INT DEFAULT 0; 

    #Get Account ID and place into variable used when calling stored procedure that builds the tree structure for the leaf node portfolio id 
    SELECT account_id 
    FROM rst_sessions.session_data 
    WHERE username = user 
    ORDER BY update_date DESC LIMIT 1 
    INTO xaccount_id; 

    RETURN xaccount_id; 
END 

संग्रहित प्रक्रिया है कि संग्रहीत समारोह कॉल करने के लिए कोशिश कर रहा है:

CREATE DEFINER=`aaron`@`%` PROCEDURE `build_report_portfolio_list`(user VARCHAR(255)) 
    READS SQL DATA 
BEGIN 

    DECLARE portf_id INT; 
    DECLARE portf_name VARCHAR(255); 
    DECLARE str_portf_parent_list VARCHAR(455); 
    DECLARE done INT DEFAULT 0; 
    DECLARE account_id INT; 

    SET account_id = get_account_id(user); 
END 
+0

मैं समारोह की बात नहीं दिख रहा है - संग्रहीत प्रक्रिया के भीतर समारोह से क्वेरी का उपयोग करें। और हालांकि मुझे उस खंड से पहले होने की आवश्यकता है ... –

+0

अच्छी तरह से, मैंने फ़ंक्शन के बिंदु को छोड़ दिया ... फ़ंक्शन को उपयोगकर्ता नाम प्राप्त होता है और खाता_आईडी पुनर्प्राप्त करने के लिए तालिका को क्वेरी करता है, फिर उस खाता आईडी को वापस लौटाता है खाता_आईडी नामक एक चर, जिसे तब किसी अन्य क्वेरी ("SET account_id" के बाद कोड) के लिए उपयोग किया जाता है, जिसे मैंने आसानी से पढ़ने के लिए छोड़ दिया ... यदि मैं "SET account_id ....." पंक्ति को टिप्पणी करता हूं तो मैं कोई त्रुटि नहीं है। – Ronedog

उत्तर

7

मैं भले ही यह संभव मैं क्या करने की कोशिश कर रहा था पता नहीं है , जो त्रुटि का कारण हो सकता है। लेकिन मुझे एसपी को कॉल के साथ एक पैरामीटर के रूप में एसएफ को कॉल करके चारों ओर एक काम मिला और मुझे वह करने के लिए मिला जो मुझे करने की ज़रूरत थी।

कोड है: CALL build_report_portfolio_list(get_account_id('username_here'));

+0

गति के बारे में कैसे? –

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