<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA日志

    JAVA日志

     

    在Orcale中使用視圖和存儲過程

    ?在Orcale中使用視圖和存儲過程
    一.視圖
    1.為什么要引入視圖這個概念?
    試想如果我們要使用計算列調整數據的結構,或者基于列值比較從多個表中抽取數據,我們就不得不采取相對很復雜的SQL語句.但是,如果我們要多次按照
    這種方式獲取數據,那豈不是要一遍又一遍的重復寫這些復雜的SQL語句,那是一件多么令人頭痛的事啊,但是,有了視圖,我們就可以完全避免這些不必要
    多做這些無用功了,SQL允許我們在數據庫中創建視圖.視圖提供了一種半持久性的改造方式,這樣我們就可以通過訪問視圖來代替直接訪問表,換句話說就是
    視圖就相當于一個抽象層,這樣就能是我們以一種更一致的方式格式數據.同時這樣也大大提高了數據的安全性,用戶僅可以訪問到視圖,而不能訪問到下層的
    數據.
    2.視圖有那些優點?
    ?1.將用戶的注意力集中在特定的數據上,從而提高數據的安全性
    ?2.簡化了數據的查詢和處理操作,DBA可以把大量的相關的內容設計到一個視圖中,使用戶在查詢和處理數據時就像處理表那么簡單,而不用編寫復雜的
    ?select語句
    ?3.有利于數據的交換
    ?4.有利于簡化對用戶權限的管理
    3.在SQL如何創建和使用視圖?
    ?創建視圖:
    ?->create view 視圖名稱 as Query(任意的select語句)
    ??Example:CREATE VIEW selectstudent
    ????AS select name from student;(該例子就提高了數據的按全性,在用戶調用這個視圖時,就只能看到學生名字)
    ?使用視圖:
    ?->select 字段名 from 視圖名 where 過濾條件
    ??Example(接上):select name from selectstudent where name = '張三';
    4.怎樣更改視圖?
    ?->CREATE OR REPLACE VIEW 視圖名 AS Query
    5.怎樣刪除視圖?
    ?->DROP VIEW 視圖名
    二.存儲過程
    1.什么是儲存過程?
    我們在使用SQL進行編程時,可以使用兩種方法儲存和執行程序.可以在本地儲存程序,創建并向數據庫發送命令并處理結果的應用程序,最好的方法當然是將程序在數據庫儲存為
    儲存過程,創建執行儲存過程并處理結果的應用程序.
    2.存儲過程有什么作用?
    ?->接受輸入參數并以輸出參數的形式將多個值返回至調用過程或進行批處理
    ?->執行數據庫操作的編程語句
    ?->向調用過程或批處理返回狀態值表明成功或失敗以及失敗的原因
    3.使用存儲過程有那些優勢?
    ?->允許模塊化程序設計.只需創建過程一次并將其保存在數據庫中,以后就能在程序中調用該過程任意次
    ?->允許更快的執行.如果某項操作需要大量的SQL代碼或需要重復執行,存儲過程將比SQL代碼執行的要快
    ?->減少網絡流量.一個需要數百行的SQL代碼操作由一條執行過程代碼的單獨語句就可以實現,而不需要在網絡中發送數百行代碼.
    ?->可作為安全機制使用
    4.如何創建存儲過程?
    ?->CREATE [OR REPLACE] 存儲過程名 (參數列表)
    ??AS
    ??BEGIN
    ???存儲過程主體
    ??END;
    ?->Orcale中參數的模式:參數名 IN 或 OUT 數據類型
    ??Example:
    ???create or replace insertstudent(i_studentid in int,i_studentname in vachar);
    ???as
    ???begin
    ????insert student(studentid,name)values(i_studentid,i_studentname);

    ???end;
    ???使用該存儲過程
    ???call insertstudent(1,'張三');
    ?->使用輸出參數:
    ??Example:
    ???create or replace getstudentname(i_studentid in int,o_studentname out vachar);
    ???as
    ???begin
    ????select name into o_studentname from student where studentid = i_studentid;
    ???end;
    ??
    ???使用該存儲過程
    ???set severout on --單獨執行
    ???declare
    ????studentname vachar(50);--變量聲明
    ???begin
    ????getstudentname(1,studentname);
    ????dbms_output.put_line(studentname);
    ???end;

    ???著輸出結果為:張三

    ???
    ???
    ?????

    ?

    posted on 2006-11-09 18:29 小木 閱讀(1346) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(1)

    隨筆檔案

    相冊

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 欧亚一级毛片免费看| 亚洲综合在线一区二区三区| eeuss免费天堂影院| 亚洲国产精品毛片av不卡在线 | 伊人久久亚洲综合影院首页| 成视频年人黄网站免费视频| 在线亚洲午夜片AV大片| 久久被窝电影亚洲爽爽爽| 精品97国产免费人成视频| 亚洲av无码国产精品色午夜字幕 | 亚洲国产综合第一精品小说| 日日麻批免费40分钟日本的| 四虎亚洲国产成人久久精品| 亚洲成a人片毛片在线| 免费国产成人高清在线观看网站 | 人妻仑刮八A级毛片免费看| 免费国产在线观看老王影院| 一级成人a做片免费| 国产V亚洲V天堂A无码| 亚洲一级毛片免费观看| 亚洲JIZZJIZZ妇女| 亚洲伊人久久成综合人影院| 成人性生交大片免费看中文| 亚洲最大在线视频| 国产老女人精品免费视频| 韩国免费a级作爱片无码| 亚洲高清在线mv| 日韩免费一级毛片| 亚洲噜噜噜噜噜影院在线播放| 天堂在线免费观看中文版| 一级A毛片免费观看久久精品 | 在线免费中文字幕| 小说专区亚洲春色校园| 啦啦啦www免费视频| 精品多毛少妇人妻AV免费久久| 亚洲美女视频网址| 免费人成在线观看视频播放| 精品一区二区三区无码免费视频| 亚洲第一综合天堂另类专| 亚洲电影免费在线观看| 777爽死你无码免费看一二区|