Oracle視圖和觸發器簡單示例,存儲過程,觸發器,視圖在開發中都是比較常見的,存儲過程的基本已經簡單的介紹了,這裏就不在廢話了。
視圖:簡單來說就是一張虛擬表,裏面存放了從一張表或多張表中獲取的我們想要的數據,視圖存在於數據庫中,不占物理內存,這個是相對的,因為視圖本身的定義語句還是要存儲在數據字典中的,視圖只有邏輯定義,而且視圖是可以操作基表的。每次使用的時候,只是重新執行SQL。要註意視圖是不可以傳參的,而存儲過程是可以傳參的。
建表:
//建表時每個字段的類型大小要合理 create table(id varchar(8),name varchar(28),pwd varchar(38),address varchar(68))
創建視圖:
//or replace:如果存在同名的視圖, 則使用新視圖"替代"已有的視圖 //v_test:視圖名稱,這個視圖獲取了user_info表中所有id='88'的數據 create or replace view v_test as select * from user_info where id = '88'
調用視圖:
select * from v_test//視圖名稱就相當於表名
通過視圖操作基表:
//這裏插入的數據其實是插入到user_info中去了 insert into v_test(id,name,pwd,address) values('7','aaa','999','杭州')
觸發器:觸發器是在事件發生時隱式地自動運行的PL/SQL程序塊,不能接收參數,不能被調用。註意:存儲過程是顯示的被調用,並且可以接收參數。
創建觸發器:
//or replace:如果存在同名的觸發器, 則使用新觸發器"替代"已有的觸發器 create or replace trigger test //在觸發事件之前執行,after:之後 before //觸發事件:在向user_info表中插入數據之前執行該觸發器 insert on user_info //對表的每一行觸發器執行一次。如果沒有這一選項,則只對整個表執行一次。 for each row begin --你讓觸發器所要做的事情 dbms_output.put_line('插入前-----'); end;
測試:
--調用存儲過程插入數據 begin test('5','張三','255','江西南昌'); end; //執行完你會在PLSQL輸入臺看到:插入前-----
總結:其實不管是視圖、觸發器還是存儲過程,都不難的(但是對於目前作者來說還是蠻難的啦),它們的根本就在於寫sql的能力,如果寫sql的能力賊強,我相信寫這些東西也是賊強的,總之一句話吧,會寫sql的重要性大於寫代碼的重要性!
Tags:
文章來源: