MySql aufrufen einer gespeicherten Funktion in einer gespeicherten Prozedur Fehler verursacht
Ich bin immer ein 1064-Fehler beim Aufruf einer gespeicherten Funktion innerhalb einer gespeicherten Prozedur. Es passiert nur auf der Linie, wo ich versuche, dies zu tun: SET account_id = get_account_id(user);
. Was ist das problem und wie kann ich es beheben?
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 versucht, rufen Sie die gespeicherte Funktion:
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 Sinn der Funktion-verwenden Sie die Abfrage aus der Funktion innerhalb der gespeicherten Prozedur. Und ich dachte, dass IN benötigt, um sein vor der FROM-Klausel...
nun, ich verließ die Stelle der Funktion...die Funktion erhält einen Benutzernamen und ein Abfragen einer Tabelle abrufen account_id, dann zurück, die Konto-id wieder in eine variable namens account_id, die dann für die anderen Abfrage (der code nach dem "SET account_id"), die ich ausgelassen habe, die für Leichtigkeit des Lesens...wenn ich den Kommentar aus der Zeile "SET account_id....." dann weiß ich nicht, keine Fehler bekommen.
nun, ich verließ die Stelle der Funktion...die Funktion erhält einen Benutzernamen und ein Abfragen einer Tabelle abrufen account_id, dann zurück, die Konto-id wieder in eine variable namens account_id, die dann für die anderen Abfrage (der code nach dem "SET account_id"), die ich ausgelassen habe, die für Leichtigkeit des Lesens...wenn ich den Kommentar aus der Zeile "SET account_id....." dann weiß ich nicht, keine Fehler bekommen.
InformationsquelleAutor Ronedog | 2010-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich weiß gar nicht, ob es möglich war, was ich versuche zu tun, was möglicherweise den Fehler verursacht hat. Aber ich fand eine Arbeit um durch den Aufruf der SF als parameter mit dem Aufruf der SP und habe es zu tun, was ich brauchte, es zu tun.
Code:
CALL build_report_portfolio_list(get_account_id('username_here'));
was über den Aufruf der Funktion innerhalb von BEGIN und END?
InformationsquelleAutor Ronedog