Kayıtlı bir işlevden saklanan bir işlevi çağırmaya çalışırken 1064 hatası alıyorum. Sadece bunu yapmaya çalıştığım satırda olur: SET account_id = get_account_id(user);
. Sorun nedir ve nasıl düzeltebilirim?MySql çağrısı saklı yordam içinde saklanan bir işlevin içinde hataya neden oluyor
Hesap Kimliği Saklı Fonksiyonlar:
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
saklanan Fonksiyonu çağırmak için çalışıyor
Saklı Prosedür:
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
Ben fonksiyonunun nokta görmüyorum - saklı yordam içindeki işlevinden sorguyu kullanın. Ve ben bu INTO FROM yan tümcesi önce olması gerekiyordu olsa da ... –
iyi, işlev noktasını bıraktım ... işlev bir kullanıcı adı alır ve account_id almak için bir tablo sorgular, sonra bu hesap kimliğini geri döndürür Daha sonra başka bir sorgu için ("SET account_id" den sonraki kod) okuma kolaylığı için dışarıda kaldığım account_id adında bir değişken ... "SET account_id ....." satırına yorum yaparsam herhangi bir hata alma. – Ronedog