如何在IBM DB2上调用用户定义的函数

问题描述 投票:0回答:1

我创建了一个用户定义的函数:

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

不知道哪里错了?是我的函数创建错误还是我使用的调用函数错误?

sql function db2
1个回答
0
投票

在寻求有关 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 子句。

© www.soinside.com 2019 - 2024. All rights reserved.