PL/SQL使用匿名塊處理資料

ocpDBAboy發表於2016-04-25
假如現在要做一個線上訂購系統,這個系統首先有一個使用者模組,所以我們要設計這個模組,首先要設計一張使用者表存放
使用者資訊要求記錄使用者的使用者名稱,密碼,證件號,真實姓名,性別,生日,手機號,地址,email地址,積分,啟用狀態等,
其它資訊可各自補充
1. 請大家設計這個使用者表
--【1】
--建立表user_info
create table user_info(
ID int,
Username varchar2(10),
Pwd varchar2(100),
Idcard varchar2(100),
Real_name varchar2(100),
Sex char(2),
Birth date,
Phone_num number,
Address varchar2(100),
Email varchar2(100),
Integral number,
Active_state char(4) default 'on',
Reg_time date default sysdate,
Other_note varchar2(100)
);
--插入資料
insert into user_info
values
  (1,
   'dbtiger',
   '123',
   '42108...',
   'TOM',
   '男',
   SYSDATE-5,
   1307979887889,
   '北京市海淀區...',
   '824661247@qq.com',
   100,
   'on',
   sysdate,
   'VIP');
select t.*,rowid from user_info t;




2.假如現在系統已經完成,網站要做一個貼心活動,對於註冊且啟用了且生日即將到達的使用者(生日前五天),
我們根據其註冊時間的長短,送積分,積分數=註冊時間月數*100,請大家用PLSQL實現這個功能
--【2】
select to_date(sysdate-5,'yyyy-mm-dd') from dual;
select to_char(sysdate-5,'yyyy-mm-dd') from dual;
select round((sysdate-t.reg_time)/30) from user_info t;
select sysdate-(sysdate-2) from dual;
select t.*,rowid from user_info t;
user_info.integral%type
declare
  --定義註冊時間月數
  v_month number := 0;
  --定義積分的變數v_integral
  v_integral number := 0;
begin
  select round((sysdate - t.reg_time) / 30)
    into v_month
    from user_info t
   where to_char(t.birth, 'yyyy-mm-dd') =
         to_char(sysdate - 5, 'yyyy-mm-dd');
  --積分數=註冊時間月數*100
  v_integral := v_month * 100;
  update user_info t
     set t.integral = v_integral + integral
   where to_char(t.birth,'yyyy-mm-dd') = to_char(sysdate - 5,'yyyy-mm-dd');
end;




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29267792/viewspace-2087583/,如需轉載,請註明出處,否則將追究法律責任。

相關文章