>데이터 베이스 >MySQL 튜토리얼 >Oracle if else 语句的写法实例

Oracle if else 语句的写法实例

WBOY
WBOY원래의
2016-06-07 17:18:533450검색

接收contract_no和item_no值,在inventory表中查找,如果产品:已发货,在arrival_date中赋值为今天后的7天已订货,在arriva

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

linux

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.