6

我在嘗試從存儲過程中調用存儲函數時出現1064錯誤。它只發生在我嘗試執行此操作的行上:SET account_id = get_account_id(user);。有什麼問題,我該如何解決它?MySql調用存儲過程中的存儲函數導致錯誤

帳戶ID存儲功能:

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

我沒有看到功能點 - 在存儲過程中使用查詢從功能。我雖然INTO需要在FROM子句之前... – 2010-10-29 20:01:28

+0

好吧,我忽略了函數的意義...函數接收用戶名並查詢表以檢索account_id,然後將該帳號id返回到一個名爲account_id的變量,然後用於另一個查詢(「SET account_id」之後的代碼),爲了便於閱讀,我省略了該變量......如果我註釋掉「SET account_id .....」行,則我不要有任何錯誤。 – Ronedog 2010-10-29 20:03:27

回答

7

我甚至不知道是否有可能是我試圖做,這可能會導致錯誤。但是我找到了一個解決方法,把SF作爲參數調用給SP,並且讓它做我所需要的。

代碼是:CALL build_report_portfolio_list(get_account_id('username_here'));

+0

速度怎麼樣? – 2017-03-03 13:07:42