zl程序教程

您现在的位置是:首页 >  其它

当前栏目

oracleifelse语句使用介绍

使用 介绍 语句
2023-06-13 09:14:40 时间
接收contract_no和item_no值,在inventory表中查找,如果产品:?
已发货,在arrival_date中赋值为今天后的7天?
已订货,在arrival_date中赋值为今天后的一个月?
既无订货又无发货,则在arrival_date中赋值为今天后的两个月,?
并在order表中增加一条新的订单记录。?

product_status的列值为"shipped"和"ordered"?
inventory:?
product_id?number(6)?
product_description?char(30)?
product_status?char(20)?
std_shipping_qty?number(3)?
contract_item:?
product_idnumber(6)?
contract_no?number(12)?
item_no?number(6)?
arrival_date?date?
order:?
order_id?number(6)?
product_id?number(6)?
qty?number(3)?

代码:
复制代码代码如下:

declare
i_product_idinventory.product_id%type;
i_product_descriptioninventory.product_description%type;
i_product_statusinventory.product_status%type;
i_std_shipping_qtyinventory.std_shipping_qty%type;
begin
//sql语句,将查询出来的值放到定义的变量中
selectproduct_id,product_description,product_status,std_shipping_qty
intoi_product_id,i_product_description,i_product_status,i_std_shipping_qty
frominventorywhereproduct_id=(
selectproduct_idfromcontract_itemwherecontract_no=&&contract_noanditem_no=&&item_no
);
ifi_product_status="shipped"then
updatecontract_itemsetarrival_date=sysdate+7contract_no=&&contract_noanditem_no=&&item_no;
//这里的elseif是连着写的
elseifi_product_status="ordered"?then?
update?contract_item?
set?arrival_date=add_months(sysdate,1)?//加一个月
where?item_no=&&itemno?and?contract_no=&&contractno;?
else
update?contract_item?
set?arrival_date=add_months(sysdate,2)?
where?item_no=&&itemno?and?contract_no=&&contractno;?
insert?into?orders?
values(100,i_product_id,i_std_shipping_qty);?
endif;
endif;
commit;
end;