服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Oracle - oracle if else语句使用介绍

oracle if else语句使用介绍

2019-11-13 15:51oracle教程网 Oracle

Oracle if else 语句的写法及应用介绍,详细可参考本文

接收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; 

延伸 · 阅读

精彩推荐