代码之家  ›  专栏  ›  技术社区  ›  Senthil

如何在saphana Scalar用户定义函数(UDF)中编写SQL语句?

  •  0
  • Senthil  · 技术社区  · 7 年前

    我正在saphana中编写一个UDF(用户定义函数)。我想在外部的另一个SQL语句中使用这个函数。

    例子:

    func_get_age (in_employee_id)
    

    SELECT AGE FROM EMPLOYEE WHERE EMPLOYEE_ID = in_employee_id
    

    现在需要将此年龄作为输出返回,然后由另一个SQL使用。有点像

    SELECT func_get_age(11234) from dummy;
    

    我的问题是

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Lars Br.    7 年前

    例如:

    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;
    

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

    select multi (3) from dummy;
    
        2
  •  1
  •   Eralper    7 年前

    是的,当然 你可以创造 user-defined scalar function on HANA database 在返回员工全名的示例中给出

    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;