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
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 ... –
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