SAP HANA SQLScript 的 Imperative Logic 包括 IF+ELSE+ENDIF 、while循环、For循环、 Case等。
1、新建文件NewFile 创建get_product_sale_price.procedure
2、Local Table Type
create typett_procuct_sale_price as table ( ProductIdnvarchar(10), Categorynvarchar(40), Price nvarchar(20), SalePricenvarchar(20) )
3、SQLScript
CREATE PROCEDUREget_product_sale_price( in productid nvarchar(10), out product_sale_pricett_procuct_sale_price ) LANGUAGESQLSCRIPT SQLSECURITY INVOKER READSSQL DATA AS BEGIN /***************************** Writeyour procedure logic *****************************/ declare lv_categorynvarchar(40) := null; declare lv_discountdecimal(15,2) := 0; lt_product = select"ProductId", "Category", "Price" from"SAP_HANA_EPM_DEMO"."sap.hana.democontent.epm.data::products" where"ProductId" = :productid; select"Category" into lv_category from :lt_product; if :lv_category ='Notebooks' then lv_discount := .20; elseif :lv_category= 'Handhelds' then lv_discount := .25; elseif :lv_category= 'Flat screens' then lv_discount := .30; elseif :lv_categorylike '%printers%' then lv_discount := .30; else lv_discount := 0.00; end if; product_sale_price = select"ProductId", "Category", "Price", "Price"-cast(("Price"* :lv_discount) as decimal(15,2)) as "SalePrice" from :lt_product; END;
4、Team→Commit& Activate之后,在SQL Console中调用代码,执行结果如图所示
call"_SYS_BIC"."WorkShop.sessiona.00.models/get_product_sale_price"( productid =>'HT-1000', product_sale_price=> ?)