Попробуйте переписать вашу функцию следующим образом -
CREATE FUNCTION smc()
RETURNS FLOAT
DETERMINISTIC
BEGIN
DECLARE w1 FLOAT;
DECLARE w2 FLOAT;
DECLARE qd FLOAT;
DECLARE hasil FLOAT;
SELECT truncate(sqrt(sum((w1 * w1))), 2) INTO w1 FROM tb_term;
SELECT truncate(sqrt(sum((w2 * w2))), 2) INTO w2 FROM tb_term;
SELECT truncate(sum(w1 * w2), 2) INTO qd FROM tb_term;
SET hasil = (qd / (w1 * w2));
RETURN hasil;
END
И переименуйте объявленные переменные w1, w2, они не должны совпадать с именами полей.