簡體   English   中英

如何在SAP HANA標量用戶定義函數(UDF)中編寫SQL語句?

[英]How to write SQL statements in SAP HANA Scalar User Defined Functions (UDF)?

我在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返回單個值而不是表。 我不是在尋找表函數。

是的,在當前的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;

是的,請確保您可以按照返回員工全名的示例中的示例在HANA數據庫上創建用戶定義的標量函數

我在下面復制了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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM