Ich erhalte einen 1064 Fehler beim Versuch, eine gespeicherte Funktion aus einer gespeicherten Prozedur aufrufen. Es passiert nur auf der Linie, wo ich das versuche: SET account_id = get_account_id(user);
. Was ist das Problem und wie kann ich es beheben?MySql Aufruf gespeicherte Funktion aus einer gespeicherten Prozedur verursacht Fehler
Konto-ID gespeicherten Funktionen:
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
gespeicherte Prozedur, die die gespeicherte Funktion aufzurufen versucht:
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
Ich sehe nicht den Punkt der Funktion - verwenden, um die Abfrage von der Funktion innerhalb der gespeicherten Prozedur. Und ich dachte, dass INTO vor der FROM-Klausel sein müsste ... –
Nun, ich habe den Punkt der Funktion weggelassen ... die Funktion empfängt einen Benutzernamen und fragt eine Tabelle ab, um die account_id abzurufen, und gibt dann diese Konto-ID zurück eine Variable namens account_id, die dann für eine andere Abfrage verwendet wird (der Code nach der "SET account_id"), die ich zum leichteren Lesen weggelassen habe ... wenn ich die Zeile "SET account_id ....." auskommentiere, dann I Erhalte keinen Fehler. – Ronedog