如何在SAP HANA标量用户定义函数(UDF)中编写SQL语句?

时间:2019-01-10 03:09:42

标签: sql sap hana

我正在SAP HANA中编写UDF(用户定义函数)。我想在外面的另一个SQL语句中使用此函数。

示例:

我想写一个

这样的UDF
func_get_age (in_employee_id)

此函数将in_employee_id用作输入参数。在UDF内,它在表上针对特定的in_employee_id执行查找并返回年龄。因此,在UDF中使用了SQL。

SELECT AGE FROM EMPLOYEE WHERE EMPLOYEE_ID = in_employee_id

现在,此Age需要作为输出返回,然后由另一个SQL使用。

SELECT func_get_age(11234) from dummy;

我的问题是

是否可以在SAP HANA中的UDF中编写SQL?我再次希望UDF返回单个值而不是表。我不是在寻找表函数。

2 个答案:

答案 0 :(得分:1)

是的,在当前的HANA版本中完全有可能。

例如:

create or replace function multi (in mult int)
returns multi_count int
as 
begin
declare cnt integer;

    select count(*) into cnt 
    from objects;

    multi_count := :cnt * :mult;
end;

此函数获取所有可见对象的数量,并将其与输入参数值相乘。该操作的结果分配给RETURN参数multi_count

select multi (3) from dummy;

答案 1 :(得分:1)

是的,可以 您可以根据示例返回的姓名创建user-defined scalar function on HANA database

我在下面复制了HANA UDF函数的简化版本

CREATE FUNCTION fnGetFullname (
 firstName VARCHAR(40),
 middleName VARCHAR(40),
 lastName VARCHAR(40)
)
returns fullname VARCHAR(120)
AS
BEGIN

fullname := CONCAT(CONCAT(CONCAT(firstName, ' '), CONCAT(middleName,' ')),lastName);

END 

您只需为返回值分配一个值

如何使用此功能

select fnGetFullname('Sith Lord','Darth','Vader') from dummy;