我试图在
MySQL中创建一个简单的自定义函数,它接受2个值(id int,currencyValue double),根据id查找另一个表中的值并返回currencyValue * rate.
这是我的伪代码,它没有让我接近这个. Google上也出现了令人惊讶的缺乏示例.
DROP FUNCTION IF EXISTS ConvertCurrency
DROP FUNCTION IF EXISTS F_ConvertCurrency //
CREATE FUNCTION F_ConvertCurrency(PID INT, C_VALUE DOUBLE)
RETURNS DOUBLE
BEGIN
DECLARE Currency_Rate DOUBLE;
SET Currency_Rate = SELECT `Rate` FROM `Currencies` WHERE `ID` = PID;
RETURN Currency_Rate*C_VALUE;
END;//
我得到’你的代码附近有一个错误……’这对我毫无帮助.
我已经看到了DELMITER关键字的其他函数示例,但不知道这意味着什么.
最佳答案 你应该暂时将DELIMITER设置为除分号(我使用$$)以外的其他东西,以便在存储的函数定义的主体中使用分号.
您可以使用SELECT … INTO …来设置本地Currency_Rate变量.我建议在变量名前加上v_前缀,以表示它是一个局部变量而不是一个表列.
以下是使用您的代码的示例:
DELIMITER $$
DROP FUNCTION IF EXISTS ConvertCurrency $$
DROP FUNCTION IF EXISTS F_ConvertCurrency $$
CREATE FUNCTION F_ConvertCurrency(PID INT, C_VALUE DOUBLE)
RETURNS DOUBLE
BEGIN
DECLARE v_Currency_Rate DOUBLE;
SELECT `Rate`
INTO v_Currency_Rate
FROM `Currencies`
WHERE `ID` = PID;
RETURN v_Currency_Rate*C_VALUE;
END $$
DELIMITER ;