【问题标题】:How to write SQL statements in SAP HANA Scalar User Defined Functions (UDF)?如何在 SAP HANA Scalar User Defined Functions (UDF) 中编写 SQL 语句?
【发布时间】:2019-01-10 03:09:42
【问题描述】:

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

例子:

我想写一个像这样的UDF

func_get_age (in_employee_id)

此函数将 in_employee_id 作为输入参数。在 UDF 内部,它在表上执行特定 in_employee_id 的查找并返回年龄。因此,一条 SQL 进入了 UDF。像

SELECT AGE FROM EMPLOYEE WHERE EMPLOYEE_ID = in_employee_id

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

SELECT func_get_age(11234) from dummy;

我的问题是

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

【问题讨论】:

    标签: sql sap hana


    【解决方案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;
    

    【讨论】:

      【解决方案2】:

      是的,当然 您可以在返回员工全名的示例中创建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;
      

      【讨论】:

        猜你喜欢
        • 2018-05-31
        • 1970-01-01
        • 2022-06-11
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多