我创建了一个用户定义的函数:
CREATE FUNCTION GetTotalSalesAmount (Product_ID char(6))
RETURNS DECIMAL(10, 2)
LANGUAGE SQL
BEGIN
DECLARE total_sales DECIMAL(10, 2);
SELECT SUM(Sales_Amount) INTO total_sales FROM Sales s WHERE s.Product_ID = Product_ID;
RETURN total_sales;
END
我尝试使用
SELECT GetTotalSalesAmount('ID2353') AS TotalSalesAmount;
来调用它,我收到一些错误 SQL Error
[42601]:意外的标记“END
SELECT GetTotalSalesAmount('ID23" 在“ETURN Total_sales”之后找到。预期的标记可能包括:“
“.. SQLCODE=-104,SQLSTATE=42601,驱动程序=4.33.31
不知道哪里错了?是我的函数创建错误还是我使用的调用函数错误?
在寻求有关 Db2 的帮助时,请始终写下您的 Db2 服务器平台(Z/OS、i 系列、linux/unix/windows/clous),因为答案可能会因服务器平台(有时还有版本)而异。 stackoverflow 上有针对每个 Db2 服务器平台的专用标签 - 使用它们。
在 Db2(所有平台)中,当您使用 SELECT 语句时,您始终需要有一个 FROM 子句。发生错误是因为您没有显示 FROM 子句。
如果您的 Db2 服务器平台是 Z/OS 大型机,那么您可以使用名为 SYSIBM.SYSDUMMY1 的伪表。您也可以在其他平台上使用它。
如果您的 Db2 服务器平台是 Linux / Unix / Windows / 云,则可以使用 VALUES 语句代替 SELECT 语句,并且 VALUES 语句不需要 FROM 子句。