亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Oracle > 正文

Oracle中命名塊之存儲過程的詳解及使用方法

2020-07-26 14:05:53
字體:
來源:轉載
供稿:網友

一、匿名塊和命名塊

◆PL/SQL塊分為良好總:命名塊和匿名塊。

◆匿名塊:以declare或begin開始,每次執行匿名塊都要通過客戶端工具將其發送給Oracle,經過語法分析、編譯然后執行。

◆命名塊:具有名稱的PL/SQL塊,這些命名塊被存儲在Oracle中,編譯一次,以后只可調用就可多次執行。如:存儲過程、存儲函數、包、觸發器等、

  存儲過程:無返回值;
  存儲函數:有返回值;
  包:可容納多個過程或函數的一個容器(較好管理這些過程和函數,類似于java中的包);
  觸發器:在合適的實際被自動執行。(無需調用,在滿足要求的情況下,自動執行;觸發器也被稱為隱式執行的命名塊!)

◆匿名塊和命名塊的區別:

  匿名塊:能夠動態地創建和執行過程代碼的PL/SQL結構,每次執行匿名塊時就會自動的將該塊數據通過文本的形式發送給Oracle,然后執行,反饋給用戶,每次執行都需發送和編譯!
  命名塊:持久化的方式將代碼作為數據庫屬性儲存在系統目錄中,在Oracle中編譯一次,下次若使用可直接調用執行,無需再次編譯,非常高效。

二、存儲過程:

存儲過程是具有名稱、完整特定功能和無返回值的PL/SQL塊,只需發送調用命令即可執行該過程,能夠實現代碼的重用,不能在SQL語句當中調用!

◆創建存儲過程:

格式:create[or replace] procedure proc_name     [(para1[int|out|in out]type,...)]     {is|AS}     prdc_body 

  proc_name表示存儲過程名;
  para1表示參數名;type是參數para1的數據類型;
  proc_body表示過程體.過程體是遵循PL/SQL塊的結構,但不能使用declare關鍵字,end后面可帶有過程名。 

注意:參數列表是可選的

◆調用存儲過程:(存儲過程創建的時候會自動的保存在Oracle中,在執行儲存過程的時候,PL/SQL塊只需調用即可!)

  (1)如果在PL/SQL塊中調用,直接使用proc_name(...);
  (2)如果使用sql plus環境中,需要使用 EXEC proc_name(...)的形式;
  (3)如果存儲過程無參數,這調用時可帶有圓括號也可不帶! 

【示例】創建一個無參數的存儲過程(顯示所有員工的信息)

create or replace procedure pr_show_employee is--進入塊的聲明部分(無需編寫declare關鍵字)   --定義游標   cursor v_emp_cursor is select * from employees;   --定義游標類型的記錄型行變量   v_emp_record v_emp_cursor%rowtype;begin   for v_emp_record in v_emp_cursor loop     dbms_output.put_line(v_emp_record.employee_id||','||v_emp_record.first_name||','||               v_emp_record.last_name||','||v_emp_record.salary);   end loop;end pr_show_employee ;

--調用存儲過程(在一個匿名塊中執行)

begin   pr_show_employee();end; 

【示例】存儲過程的參數接受產品類別編號,輸出該類所有產品的信息

create or replace procedure pr_show_product(product_type products.product_type_id%type)as --定義游標 cursor v_prd_cursor is select * from products p where product_type = p.product_type_id; --定義游標的行類型變量 v_prd_record v_prd_cursor%rowtype;begin   for v_prd_record in v_prd_cursor loop  dbms_output.put_line(v_prd_record.product_id||','||v_prd_record||','||product_type_id||','||v_prd_record.description||','||v_prd_record.name||','||v_prd_record.price);   end loop;end pr_show_product;--調用存儲過程(執行)declare    --定義編號變量的類型    v_prd_type_id products.product_type_id%type := 1;begin   pr_show_product(v_prd_type_id);end; 

◆參數的傳遞模式:

  參數傳遞有三種模式:in、out、in out
  in:過程調用時,實參的值會傳遞給形參。形參被看作是常量,在過程內部不能被修改。
  out:過程調用時,實參的值被忽略,形參為null值,在過程內部形參變量可以讀寫。過程結束時,形參的值賦值給實參!
  in out:過程調用時,實參的值傳遞給形參,在過程內部形參變量可讀可寫,過程結束時,形參的值賦值給實參。 

注意:如果在定義存儲過程時,沒有指明參數傳遞模式,則默認為 in 模式

【示例】創建一個有參數傳遞默認的存儲過程

create or replace procedure pr_test(p_1 in out varchar2)is begin   dbms_output.put_line('p_1='||p_1);   p_1 := 'abc';    dbms_output.put_line('p_1='||p_1);end pr_test;

--調用存儲過程

declare  v_1 varchar2(5) := 'wwww';begin  pr_test(v_1);   dbms_output.put_line('v_1='||v_1);end;

注意:(1)在創建存儲過程時,形參類型不能指定具體的長度,字符類型就為 varchar2,數字類型就是number;默認和實參類型的長度等同

     (2)使用 in 模式,形參接受實參的值,默認形參為常量,在存儲過程當中不能被修改,否則出錯!
     (3)使用 out 模式,實參的值被忽略,但必須是變量,用來接收存儲過程執行完形參的值;而形參是可讀可寫的。
     (4)使用 in out 模式,實參的值傳遞給形參,也必須是變量,形參可讀可寫,最后執行完存儲過程形參的值傳遞給實參!
     (5)參數傳遞,實參的值和長度或精度約束會傳遞給形參,因此,形參不能有長度或精度的約束。在過程中給形參賦值時,要注意它的長度或精度的限制!

感謝 閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕亚洲精品| 7m精品福利视频导航| 日韩精品在线视频观看| 久久综合久久美利坚合众国| 欧美视频一区二区三区…| 亚洲美女www午夜| 欧美精品一区在线播放| 久久精品99久久香蕉国产色戒| 第一福利永久视频精品| 日韩中文字幕精品视频| 久久国产精品久久国产精品| 欧美激情一区二区三级高清视频| 国产日韩在线一区| 亚洲美女自拍视频| 92福利视频午夜1000合集在线观看| 亚洲国产第一页| 一区二区三区国产在线观看| 久久精品成人欧美大片古装| 亚洲最大av网| 亚洲天堂av图片| 国产精品久久久久久久久久久不卡| 久久影院资源网| 91丨九色丨国产在线| 欧美精品www在线观看| 亚洲激情视频在线播放| 日韩一级裸体免费视频| 日韩av在线精品| 亚洲免费精彩视频| 一区二区三区国产在线观看| 国产精品一区二区av影院萌芽| 国产一区二区三区中文| 亚洲精品福利免费在线观看| 91高清视频在线免费观看| 97在线观看免费高清| 亚洲成人精品久久久| 国内精品免费午夜毛片| 精品久久久久久久久久久| 欧美激情一区二区三区高清视频| 亚洲欧美国产精品久久久久久久| 欧美日韩国产丝袜另类| 欧美中文字幕在线播放| 97人人模人人爽人人喊中文字| 日韩精品欧美国产精品忘忧草| 成人av资源在线播放| 97免费在线视频| 日韩欧美亚洲国产一区| 伊人久久综合97精品| 麻豆成人在线看| 国产精品美女免费| 国产亚洲精品久久久久动| 欧美性精品220| 国产精品午夜一区二区欲梦| 欧美日韩午夜视频在线观看| 中文字幕精品久久久久| 久久久久久久久久久久久久久久久久av| 亚洲第一精品久久忘忧草社区| 日本乱人伦a精品| 一区二区国产精品视频| 欧美xxxx14xxxxx性爽| 搡老女人一区二区三区视频tv| 日韩精品免费在线播放| 黑人巨大精品欧美一区二区免费| 国产精品日韩欧美大师| 在线观看精品自拍私拍| 国产91精品青草社区| 精品毛片网大全| 日韩视频免费在线| 国产精品偷伦免费视频观看的| 日韩av网站在线| 欧美网站在线观看| 久久久精品国产亚洲| 久久视频这里只有精品| 九九久久国产精品| 欧美午夜片欧美片在线观看| 色老头一区二区三区在线观看| 久热精品在线视频| 国产精品成av人在线视午夜片| 亚洲国产精久久久久久久| 69久久夜色精品国产7777| 国产91久久婷婷一区二区| 国产精品一区二区在线| 国产婷婷色综合av蜜臀av| 人体精品一二三区| 久久久久北条麻妃免费看| 在线午夜精品自拍| 国产精品国产三级国产aⅴ9色| 97精品伊人久久久大香线蕉| 久久视频精品在线| 亚洲精品美女久久久| 日韩精品极品视频| 97在线视频免费| 国产精品稀缺呦系列在线| 美女国内精品自产拍在线播放| 精品国产户外野外| 热久久美女精品天天吊色| 久久久久久国产免费| 日韩一区二区欧美| 欧美视频国产精品| 亚洲电影免费观看高清完整版| 日韩欧美一区视频| 欧美猛交ⅹxxx乱大交视频| 国产精品精品一区二区三区午夜版| 欧美黑人性视频| 久久久久久亚洲精品中文字幕| 亚洲国产成人精品女人久久久| 国产精品激情av电影在线观看| 亚洲aa在线观看| www.99久久热国产日韩欧美.com| 国产成人精品视频| 免费99精品国产自在在线| 91亚洲国产精品| 欧美激情国产日韩精品一区18| 国产精品久久久久久av福利| 色偷偷偷综合中文字幕;dd| 亚洲欧美日韩精品久久亚洲区| 超碰91人人草人人干| 国产精品一区二区三区在线播放| 亚洲成人网在线观看| 欧美精品成人91久久久久久久| 日韩中文在线不卡| 综合国产在线观看| 亚洲精品视频二区| 高清日韩电视剧大全免费播放在线观看| 日韩在线www| 97精品久久久| 国内免费精品永久在线视频| 日韩欧美在线视频| xxx欧美精品| xxx欧美精品| 九九久久精品一区| 亚洲欧美日韩天堂一区二区| 久久亚洲精品一区二区| 精品综合久久久久久97| 美女撒尿一区二区三区| 成人在线激情视频| 亚洲成年人影院在线| 久久久久这里只有精品| 97在线视频免费| 色婷婷综合成人| 91亚洲午夜在线| 国产精品第3页| 国产精品视频精品| 欧美巨乳在线观看| 日韩在线视频线视频免费网站| 91国产高清在线| 91社影院在线观看| 亚洲欧美在线x视频| 亚洲乱码国产乱码精品精| 色先锋资源久久综合5566| 国产精品91久久久久久| 久久久久久成人精品| 亚洲国产精彩中文乱码av| 国产精品夫妻激情| 日韩在线视频免费观看| 日韩av免费看| 国产日韩av在线播放| 97在线看福利| 中文字幕日韩欧美| 91精品国产综合久久久久久久久| 日韩成人黄色av| 国产精品美女主播在线观看纯欲| 亚洲精品久久久久久久久| 中文字幕av一区中文字幕天堂| 亚洲视频在线免费看|