我想在phpmyadmin中做一些功能
DELIMITER //
CREATE FUNCTION total_bayar (order_id char(10))
RETURNS double
DETERMINISTIC
BEGIN
DECLARE dist double;
SET dist = SELECT sum(qty * price) FROM detail_masakan WHERE order_id = order_id;
RETURN dist;
END//
DELIMITER ;
查询SQL:Dokumentasi
CREATE FUNCTION total_bayar (order_id char(10))
RETURNS double
DETERMINISTIC
BEGIN
DECLARE dist double;
SET dist = SELECT sum(qty * price) FROM detail_masakan WHERE order_id = order_id;
RETURN dist;
END
MySQL说:Dokumentasi
#1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在'SELECT sum(qty * price)FROM FROM detail_masakan WHERE order_id = order_id;
附近使用 在第6行返回”
答案 0 :(得分:0)
似乎不喜欢您使用SET命令。改用SELECT ... INTO。
DELIMITER //
CREATE FUNCTION total_bayar (order_id char(10)) RETURNS double
DETERMINISTIC
BEGIN
DECLARE dist double;
SELECT sum(qty * price) INTO dist FROM detail_masakan WHERE order_id = order_id;
RETURN dist;
END// DELIMITER ;
答案 1 :(得分:0)
您需要在子查询中加上括号:
SET dist = (SELECT sum(qty * price) FROM detail_masakan WHERE order_id = order_id);
但是,这仍然不能满足您的要求,因为变量名被弄乱了-并将与列名混淆。
我建议:
DELIMITER //
CREATE FUNCTION total_bayar (in_order_id char(10))
RETURNS double
DETERMINISTIC
BEGIN
DECLARE out_dist double;
SELECT out_dist := sum(dm.qty * dm.price)
FROM detail_masakan dm
WHERE dm.order_id = in_order_id;
RETURN out_dist;
END//
DELIMITER ;