2016-04-16 18 views
0

Ich versuche, eine MySQL-Funktion zu erstellen, die die Mitarbeiter der Zeit auf Projekte zu speichern und speichern sie in v_emptime und dann diese Variable verwenden, um einen Gesamtaufwand zu berechnen, etwa so:MySQL - Funktion hält null Rückkehr

delimiter // 

create function F_COUNT_EDUCATION (p_empno char(6)) returns decimal(10, 2) 
begin 

    declare v_emptime decimal(5, 2); 
    declare output decimal(10, 2); 

    select sum(emptime) # There are multiple records for some, using sum() for total time 
     into @v_emptime 
     from empprojact 
     where empno = p_empno; 

    # if I return v_emptime here it will be null 

    select (@v_emptime * comm + salary + bonus) expense 
     into @output 
     from employee 
     where empno = p_empno; 

    return @output; 

end // 

delimiter ; 

Das Problem ist jedoch, dass output immer Null zurückgibt. Ich habe die Daten unzählige Male überprüft und die Daten haben alle Werte. Was bedeutet, dass ich wahrscheinlich etwas sehr Einfaches übersehe. Jede Hilfe oder Einsicht wäre dankbar, danke!

+0

hätte ich gedacht, dass auch, aber auf 'ab employee' dem Speichern mit einem char (6) – Jujunol

Antwort

0

Versuchen Sie Folgendes: Ändern Sie den Namen der Variablen "@output". Und ändern Abfrage dies:

select @v_emptime = sum(emptime) 
from empprojact 
where empno = p_empno; 

Und:

select @newVariableName = (@v_emptime * comm + salary + bonus) expense 
from employee where empno = p_empno; 
+0

ich nicht sicher, warum, aber es funktioniert jetzt, danke! :) – Jujunol

+0

Da in ist eine neue Tabelle erstellen –

+0

Beispiel Verwendung: SELECT * INTO Newtable FROM Tabelle1 WHERE 1 = 0; –