6

Tôi gặp lỗi 1064 khi cố gọi một hàm được lưu trữ từ bên trong một thủ tục đã lưu. Nó chỉ xảy ra trên dòng mà tôi cố gắng làm điều này: SET account_id = get_account_id(user);. Vấn đề là gì và tôi có thể khắc phục nó như thế nào?Chức năng gọi hàm MySql được lưu trữ từ bên trong một thủ tục lưu sẵn gây ra lỗi

ID tài khoản lưu trữ Chức năng:

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 

Stored Procedure mà đang cố gắng để gọi các chức năng lưu trữ:

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

Tôi không thấy điểm của hàm - sử dụng truy vấn từ hàm trong quy trình được lưu trữ. Và tôi cho rằng INTO cần phải đứng trước mệnh đề FROM ... –

+0

tốt, tôi bỏ qua điểm của hàm ... hàm nhận tên người dùng và truy vấn một bảng để truy xuất account_id, sau đó trả về id tài khoản đó trở lại một biến được gọi là account_id, sau đó được sử dụng cho truy vấn khác (mã sau "SET account_id") mà tôi đã bỏ qua để dễ đọc ... nếu tôi nhận xét dòng "SET account_id ....." thì tôi không nhận được bất kỳ lỗi nào. – Ronedog

Trả lời

7

Tôi thậm chí không biết nếu nó là có thể những gì tôi đã cố gắng làm , có thể đã gây ra lỗi. Nhưng tôi tìm thấy một công việc xung quanh bằng cách gọi SF như một tham số với các cuộc gọi đến SP và nhận nó để làm những gì tôi cần nó để làm.

Mã số: CALL build_report_portfolio_list(get_account_id('username_here'));

+0

tốc độ như thế nào? –

Các vấn đề liên quan