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=> ?)