【发布时间】:2020-06-01 21:59:54
【问题描述】:
我正在编写一个 SQLyog 函数来根据客户花费的金额查找客户的状态。他们花费的金额位于支付表中,所有客户详细信息位于客户表中。
编辑:请注意,当输出只是 CustStatus 时,该函数有效,似乎问题与包含其他返回值有关。
这是我收到的错误:
错误代码:1064 您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 在 ' VARCHAR(50), VARCHAR(50), VARCHAR(10) 附近使用的语法 确定性
在第 2 行开始声明 k1 INT(11'
DROP FUNCTION IF EXISTS DTC_VIP_members $$
CREATE FUNCTION DTC_VIP_members (v1 INT(11))
RETURNS INT(11), VARCHAR(50), VARCHAR(50), VARCHAR(10) DETERMINISTIC
BEGIN
DECLARE k1 INT(11);
DECLARE CustStatus VARCHAR(10);
SELECT SUM(payment.SaleAmt) INTO k1
FROM payment
INNER JOIN clients
ON payment.client_id = clients.client_id
WHERE payment.client_id = v1;
IF k1 >= 300 THEN
UPDATE clients
SET clients.CustStatus = 'VIP';
ELSE
UPDATE clients
SET clients.CustStatus = 'Non-VIP';
END IF;
RETURN clients.client_id, clients.first_name, clients.last_name, clients.CustStatus;
END $$
DELIMITER ;
【问题讨论】: