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.

InformationsquelleAutor Ronedog | 2010-10-29

Schreibe einen Kommentar