oracle if else语句使用介绍

时间:2022-03-02 07:22:53

接收contract_no和item_no值,在inventory表中查找,如果产品:
已发货,在arrival_date中赋值为今天后的7天
已订货,在arrival_date中赋值为今天后的一个月
既无订货又无发货,则在arrival_date中赋值为今天后的两个月,
并在order表中增加一条新的订单记录。

product_status的列值为'shipped'和'ordered'
inventory: 
product_idnumber(6) 
product_descriptionchar(30) 
product_statuschar(20) 
std_shipping_qtynumber(3) 
contract_item: 
product_id number(6) 
contract_nonumber(12) 
item_nonumber(6) 
arrival_datedate 
order: 
order_idnumber(6) 
product_idnumber(6) 
qtynumber(3) 

代码: 

复制代码代码如下:


declare 
i_product_id inventory.product_id%type; 
i_product_description inventory.product_description%type; 
i_product_status inventory.product_status%type; 
i_std_shipping_qty inventory.std_shipping_qty%type; 
begin 
//sql语句,将查询出来的值放到定义的变量中 
select product_id, product_description, product_status, std_shipping_qty 
into i_product_id, i_product_description, i_product_status, i_std_shipping_qty 
from inventory where product_id=( 
select product_id from contract_item where contract_no=&&contract_no and item_no=&&item_no 
); 
if i_product_status='shipped' then 
update contract_item set arrival_date=sysdate+7 contract_no=&&contract_no and item_no=&&item_no; 
//这里的elseif 是连着写的 
elseif i_product_status='ordered'then 
updatecontract_item 
setarrival_date=add_months(sysdate,1)//加一个月 
whereitem_no=&&itemnoandcontract_no=&&contractno; 
else 
updatecontract_item 
setarrival_date=add_months(sysdate,2) 
whereitem_no=&&itemnoandcontract_no=&&contractno; 
insertintoorders 
values(100,i_product_id,i_std_shipping_qty); 
end if; 
end if; 
commit; 
end;