Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程
1、視圖的介紹和使用
表和視圖的區別,表是占用硬盤空間物理表,而視圖可以理解為一個虛表,并不存儲在硬盤上,
不占用硬盤空間,實際上就是一個查詢語句,方便查詢。
對視圖里面的數據操作(增 刪 改) 其實就是對真實的表 增 刪 改, 它們始終保持一致性。
哪為什么還需要視圖 ?
視圖可以理解成一個封裝過的表, 例如不讓用戶 清楚知道表的某些字段信息,比較安全。
===========
下面進行操作 演示
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer);
INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);
INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);
INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);
INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);
增加一個視圖:
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
CREATE VIEW xs_view AS SELECT * FROM xue_sheng
*
ERROR at line 1:
ORA-01031: insufficient privilegesscott ?沒有創建視圖的權限
更改用戶為sysdba
----------------------------------
SQL> conn /as sysdba
Connected.
SQL> grant connect,dba to scott; ? ?賦予權限;
Grant succeeded.
SQL> conn scott/tiger
Connected.
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
View created.
------------------------------
#對比表和視圖,一模一樣
#插入一條數據可以發現,對視圖增刪改,就是對表增刪改;
#設置視圖權限
CREATE OR REPLACE 的使用 和 設置視圖的權限WITH READ ONLY 只讀
如果視圖不存在,則創建視圖;如果視圖存在則替換視圖;
修改原來的視圖, 其實就是做一個替換
修改視圖為只讀權限
CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WITH READ ONLY;
提示這是一個 read-only view 只讀的視圖
#創建一個帶條件的視圖
#再增加一個班級表
CREATE TABLE ban_ji( id integer , ban_ji varchar(25));
INSERT INTO ban_ji VALUES(1,'1-(1)');
INSERT INTO ban_ji VALUES(2,'1-(2)');
INSERT INTO ban_ji VALUES(3,'1-(3)');
建立一個簡單的視圖, 取代復雜的查詢語句,創建一個視圖用于臨時存放查詢結果,而且以后需要對查詢的結果反復操作;
CREATE OR REPLACE VIEW xs_view AS SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;
SELECT * FROM xs_view;
顯示視圖的字段和數據類型
DESC xs_view;
2、存儲過程
#定義
存儲過程 - 執行一個任務,該任務包括了一系列的PL SQL語句,存儲在數據庫中,成為數據庫一個對象。效率比較高的,但你創建一個存儲過程它會進行一個判斷編譯的
#創建一個簡單的存儲過程,這個存儲過程什么都不操作,NULL表示;
is:聲明一些變量;
#執行存儲過程;
以上2中方法執行存儲過程,如果沒有什么輸出參數可以用第一種execute xs_proc;如果有輸出參數,最好用第2中方法;
#存儲過程顯示信息
輸出要設置為ON , 才會把 hello 顯示出來
#存儲過程實例
CREATE TABLE xue_sheng( id integer, xing_ming varchar(25), yu_wen number,shu_xue number);
INSERT INTO xue_sheng VALUES(1,'ZhanSan',80,90);
INSERT INTO xue_sheng VALUES(2,'LiSi',85,87);
只帶一個輸入參數 ,把查詢的結果顯示出來
當輸入學生的名字, 就會把他的總分(語文+數學)顯示出來。
#輸入參數 和 輸出參數一起使用
#維護存儲過程
1、查看過程狀態
SELECT object_name,status FROM USER_OBJECTS WHERE object_type='PROCEDURE';
2、重新編譯過程
ALTER PROCEDURE xs_proc COMPILE;
3、查看過程的源代碼
SELECT * FROM USER_SOURCE WHERE TYPE='PROCEDURE';
4、刪除存儲過程
DROP PROCEDURE xs_proc;
總結
以上是生活随笔為你收集整理的Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lofter怎么设置文章仅自己可见
- 下一篇: vivo 产品副总裁黄韬:X100 Pr