简体   繁体   English

如何在SAP HANA中的过程中分配变量

[英]how to assign a variable in procedure in SAP HANA

here i tried to give discount based on quantity ordered by using procedure. 在这里,我尝试根据使用过程订购的数量给予折扣。 but i dont know how assign a value of column to the variable in procedure. 但是我不知道如何在过程中将列的值分配给变量。

here my code: 这是我的代码:

create column table "KABIL_PRACTICE"."SALES_IF_ELSE"
(
"SALES_ID" integer,
"PRODUCT_ID" integer,
"QTY" integer,
"DISCOUNT" integer,
"SALES_AMOUNT" Double
);

insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (1,101,15,1500);
insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (2,102,25,2500);
insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (3,103,35,3500);
insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (4,104,40,4000);
insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (5,105,27,2700);
insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (6,106,32,3200);
insert into "KABIL_PRACTICE"."SALES_IF_ELSE" ("SALES_ID","PRODUCT_ID","QTY","SALES_AMOUNT") values (7,107,19,1900);

create procedure "KABIL_PRACTICE"."IF_ELSE_DISC"
language sqlscript
as begin
declare QTY integer ;
select "QTY" from "KABIL_PRACTICE"."SALES_IF_ELSE" := QTY;
if ( QTY > 25)
then
update "KABIL_PRACTICE"."SALES_IF_ELSE" set "DISCOUNT" = 5;
else if
update "KABIL_PRACTICE"."SALES_IF_ELSE" set "DISCOUNT" = 1;
end if;
end if;
end;

anyone help me.... 任何人都可以帮助我...

This is a classic case of not using SQL enough but instead trying to force an imperative programming style on a SQL database. 这是一个典型的案例,没有足够使用SQL,而是试图在SQL数据库上强制使用命令式编程风格。 All you want to do is update a table based on a condition, isn't it? 您要做的就是根据条件更新表,不是吗?

In that case, there is no need for procedural logic at all (and that's true for any SQL database). 在那种情况下,根本不需要过程逻辑(对于任何SQL数据库都是如此)。

UPDATE "KABIL_PRACTICE"."SALES_IF_ELSE" 
SET "DISCOUNT" = (CASE WHEN "QTY" >25 
                     THEN 2 
                     ELSE 1 
                  END) ;

This will store the computed "DISCOUNT" value in the table with no looping, in a single command. 这将在单个命令中无循环地将计算出的"DISCOUNT"值存储在表中。

You can assign variables by selecting columns into them. 您可以通过选择变量来分配变量。 For example: 例如:

SELECT QTY INTO QTY FROM KABIL_PRACTICE.SALES_IF_ELSE

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM