校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Oracle數據庫創建存儲過程的示例詳解

Oracle數據庫創建存儲過程的示例詳解

熱門標簽:地圖標注坐標圖標 手機地圖標注門店 鶴壁電話機器人價格 杭州網絡外呼系統運營商 電銷套路機器人 網貸外呼系統合法嗎 地圖標注效果的制作 汽車4s店百度地圖標注店 安陽企業電銷機器人供應商

1.1,Oracle存儲過程簡介: 

  存儲過程是事先經過編譯并存儲在數據庫中的一段SQL語句的集合,調用存儲過程可以簡化應用開發人員的很多工作,
減少數據在數據庫和應用服務器之間的傳輸,對于提高數據處理的效率是有好處的。

優點:

  • 允許模塊化程序設計,就是說只需要創建一次過程,以后在程序中就可以調用該過程任意次。
  • 允許更快執行,如果某操作需要執行大量SQL語句或重復執行,存儲過程比SQL語句執行的要快。
  • 減少網絡流量,例如一個需要數百行的SQL代碼的操作有一條執行語句完成,不需要在網絡中發送數百行代碼。
  • 更好的安全機制,對于沒有權限執行存儲過程的用戶,也可授權他們執行存儲過程。

1.2,創建存儲過程的語法:

create [or replace] procedure 存儲過程名(param1 in type,param2 out type)
as
 變量1 類型(值范圍);
 變量2 類型(值范圍);
begin
 select count(*) into 變量1 from 表A where列名=param1;
 if (判斷條件) then
 select 列名 into 變量2 from 表A where列名=param1;
 dbms_output.Put_line('打印信息');
 elsif (判斷條件) then
 dbms_output.Put_line('打印信息');
 else
 raise 異常名(NO_DATA_FOUND);
 end if;
exception
 when others then
 rollback;
end;

參數的幾種類型:

in 是參數的默認模式,這種模式就是在程序運行的時候已經具有值,在程序體中值不會改變。
out 模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳遞回調用他的過程
in out 表示高參數可以向該過程中傳遞值,也可以將某個值傳出去

1.3,示范一些存儲過程

[下面一些存儲過程的操作根據自己數據庫中的內容進行內容顯示,只要顯示內容就正確,報錯除外- -,還有存儲過程盡量不要粘貼代碼,很容易報錯]:

 1.3.1,不帶參數的存儲過程:

CREATE OR REPLACE PROCEDURE MYDEMO02
AS
 name VARCHAR(10);
 age NUMBER(10);
BEGIN
 name := 'xiaoming';--:=則是對屬性進行賦值
 age := 18;
 dbms_output.put_line ( 'name=' || name || ', age=' || age );--這條是輸出語句
END;
--存儲過程調用(下面只是調用存儲過程語法)
BEGIN
 MYDEMO02();
END;

 1.3.2,帶參數的存儲過程:

CREATE OR REPLACE procedure MYDEMO03(name in varchar,age in int)
AS
BEGIN
 dbms_output.put_line('name='||name||', age='||age);
END;

--存儲過程調用
BEGIN
 MYDEMO03('姜煜',18);
END;

 1.3.3,出現異常的輸出存儲過程:

CREATE OR REPLACE PROCEDURE MYDEMO04
AS
 age INT;
BEGIN
 age:=10/0;
 dbms_output.put_line(age);
EXCEPTION when others then --處理異常
 dbms_output.put_line('error');
END;
--調用存儲過程
BEGIN
 MYDEMO04;
END;
  • Oracle常見的三大異常分類[沒有詳細陳述,有興趣的同學可以自行查下]
  • 預定義異常:由PL/SQL定義的異常。由于它們已在standard包中預定義了,因此,這些預定義異常可以直接在程序中使用,而不必再定義部分聲明。
  • 非預定義異常:用于處理預定義異常所不能處理的Oracle錯誤。
  • 自定義異常:用戶自定義的異常,需要在定義部分聲明后才能在可執行部分使用。用戶自定義異常對應的錯誤不一定是Oracle錯誤,例如它可能是一個數據錯誤。

1.3.4,獲取當前時間和總人數:

CREATE OR REPLACE PROCEDURE TEST_COUNT01
IS
 v_total int;
 v_date varchar(20);
BEGIN
 select count(*) into v_total from EMP_TEST WHERE ENAME ='燕小六'; --into是賦值的關鍵字
 select to_char(sysdate,'yyyy-mm-dd')into v_date FROM EMP_TEST WHERE ENAME ='郭芙蓉';
 DBMS_OUTPUT.put_line('總人數:'||v_total);
 DBMS_OUTPUT.put_line('當前日期'||v_date);
END;

--調用存儲過程
BEGIN
 TEST_COUNT01();
END;

 1.3.5,帶輸入參數和輸出參數的存儲過程:

CREATE OR REPLACE PROCEDURE TEST_COUNT04(v_id in int,v_name out varchar2)
IS
BEGIN
 SELECT ENAME into v_name FROM EMP_TEST WHERE EMPNO = v_id;
 dbms_output.put_line(v_name);
EXCEPTION
 when no_data_found then dbms_output.put_line('no_data_found');
END;

--調用存儲過程
DECLARE
 v_name varchar(200);
BEGIN
 TEST_COUNT04('1002',v_name);
END;

 1.3.6,查詢存儲過程以及其他:

CREATE OR REPLACE PROCEDURE job_day04(de in varchar,name out varchar,App_Code out varchar,error_Msg out varchar)
AS
BEGIN
 SELECT ENAME into name FROM EMP_TEST WHERE ENAME=de;
EXCEPTION WHEN others THEN
 error_Msg:='未找到數據';
END;
--調用存儲過程
DECLARE
  de varchar(10);
  ab varchar(10);
   appcode varchar(20);
   ermg varchar(20);
BEGIN
   de:= '張三豐';
   JOB_DAY04(de,ab,appcode,ermg);
   dbms_output.put_line(ermg);
END;

 1.3.7,向數據庫中添加數據的存儲過程

CREATE OR REPLACE PROCEDURE job_day05(do1 in varchar,dn1 in varchar,eo1 in number,en1 in varchar,App_Code out varchar,error_Msg out varchar)
AS
BEGIN
 INSERT INTO STUDENT(NAME,CLASS)VALUES(do1,dn1);
 INSERT INTO COMPANY(EMPID,NAME,DEPARNAME)VALUES(eo1,en1,do1);
COMMIT;
EXCEPTION WHEN OTHERS THEN
 App_Code:=-1;
 error_Msg:='插入失敗';
END;
--調用存儲過程
DECLARE
  do1 varchar(10);
  dn1 varchar(10);
   eo1 number(20);
   App_Code varchar(20);
 error_Msg varchar(20);
BEGIN
    do1:= '張三豐';
 dn1:='新橋';
 eo1:=1001;
    JOB_DAY04(do1,dn1,App_Code,error_Msg);
    dbms_output.put_line(ermg);
END;

這個比較麻煩,做的時候假如報錯就別找了- -我找了好久也沒找到,,,

2.0,游標的使用,看到的一段解釋很好的概念,如下:

  •  游標是SQL的一個內存工作區,由系統或用戶以變量的形式定義。游標的作用就是用于臨時存儲從數據庫中提取的數據塊。在某些情況下,需要把數據從存放
  •    在磁盤的表中調到計算機內存中進行處理,最后將處理結果顯示出來或最終寫回數據庫。這樣數據處理的速度才會提高,否則頻繁的磁盤數據交換會降低效率。
  •    游標有兩種類型:顯式游標和隱式游標。在前述程序中用到的SELECT...INTO...查詢語句,一次只能從數據庫中提取一行數據,對于這種形式的查詢和DML操作,
  •    系統都會使用一個隱式游標。但是如果要提取多行數據,就要由程序員定義一個顯式游標,并通過與游標有關的語句進行處理。顯式游標對應一個返回結果為多
  •    行多列的SELECT語句。
  •    游標一旦打開,數據就從數據庫中傳送到游標變量中,然后應用程序再從游標變量中分解出需要的數據,并進行處理。
  •    在我們進行insert、update、delete和select   value into  variable 的操作中,使用的是隱式游標
  •    隱式游標的屬性 返回值類型意義            
  •    SQL%ROWCOUNT    整型  代表DML語句成功執行的數據行數  
  •    SQL%FOUND   布爾型 值為TRUE代表插入、刪除、更新或單行查詢操作成功  
  •    SQL%NOTFOUND    布爾型 與SQL%FOUND屬性返回值相反  
  •    SQL%ISOPEN  布爾型 DML執行過程中為真,結束后為假 

 2.1,修改雇員薪資:

 CREATE OR REPLACE PROCEDURE job_day06(epo in number)
  AS
 BEGIN
  UPDATE EMPS SET SAL=(SAL+100) WHERE empno = epo;
  IF SQL%FOUND --SQL%FOUND是隱式游標 作用:判斷SQL語句是否成功執行,當有作用行時則成功執行為true,否則為false。 6 THEN
  DBMS_OUTPUT.PUT_LINE('成功修改雇員工資!');
  commit;
  else
  DBMS_OUTPUT.PUT_LINE('修改雇員工資失敗!');
  END IF;
 END;
 --調用存儲過程
 declare
 e_number number;
 begin
 e_number:=1001;
 job_day06(e_number);
 end;

 2.2,查詢編號為1001信息

CREATE OR REPLACE PROCEDURE job_day07
IS
BEGIN
DECLARE
 cursor emp_sor is select name,sal FROM EMPS WHERE EMPNO = '1001'; --聲明游標
 cname EMPS.NAME%type; --%type 作用: 聲明的變量ename與EMPS表的NAME列類型一樣
 csal EMPS.SAL%type;
BEGIN
 open emp_sor; --打開游標
 loop
-- 取游標值給變量
 FETCH emp_sor into cname,csal;
 dbms_output.put_line('name:'||cname);
 exit when emp_sor%notfound;
 end loop;
 close emp_sor; --關閉游標
end;
end;
--調用存儲過程
BEGIN
 job_day07();
END;

總結:

  存儲過程通俗的理解就是就是一個執行過程,調用的時候給他所需要的需求就會對數據庫進行操作,相當于我們自己手寫Sql,只不過有了存儲過程
  只要調用一下傳給他參數他就會幫我們寫,比較方便,靈活的運用存儲過程會讓我們開發很方便

到此這篇關于Oracle數據庫創建存儲過程的示例詳解的文章就介紹到這了,更多相關Oracle數據庫創建存儲過程內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Oracle 區塊鏈表創建過程詳解
  • Oracle多表查詢中間表的創建實例教程
  • Oracle數據庫scott用戶創建view視圖權限的操作方法
  • Navicat Premium中Oracle創建主鍵自增的方法
  • Navicat for oracle創建數據庫的方法
  • 通過PLSQL Developer創建Database link,DBMS_Job,Procedure,實現Oracle跨庫傳輸數據的方法(推薦)
  • oracle創建dblink方法示例
  • Oracle 給rac創建單實例dg并做主從切換功能
  • Oracle創建設置查詢權限用戶的方法
  • Oracle創建新undo表空間最佳實踐(包含段檢查)
  • 使用sqlplus命令行工具為oracle創建用戶和表空間
  • Oracle創建只讀賬號的詳細步驟

標簽:酒泉 銀川 河源 梧州 焦作 泰安 柳州 南陽

巨人網絡通訊聲明:本文標題《Oracle數據庫創建存儲過程的示例詳解》,本文關鍵詞  Oracle,數據庫,創建,存儲,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle數據庫創建存儲過程的示例詳解》相關的同類信息!
  • 本頁收集關于Oracle數據庫創建存儲過程的示例詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91色porny| 中文字幕一区二区视频| 国产日韩高清在线| 国产一区二区福利视频| 久久久精品人体av艺术| 国产91富婆露脸刺激对白| 亚洲视频网在线直播| 在线免费不卡视频| 日本成人在线网站| 国产精品视频免费| 欧美日韩高清一区二区| 久久99久久久久久久久久久| 久久精品视频一区二区| 色女孩综合影院| 免费观看在线综合| 国产精品嫩草影院com| 在线观看中文字幕不卡| 精品一区免费av| 亚洲一区二区在线免费看| 精品福利视频一区二区三区| 97久久精品人人做人人爽| 日韩国产欧美三级| 亚洲日本电影在线| 欧美成人精品福利| 色欧美乱欧美15图片| 首页国产欧美久久| 亚洲欧美另类小说视频| 久久影音资源网| 欧美午夜在线观看| 成人黄色免费短视频| 美女被吸乳得到大胸91| 亚洲精品欧美在线| 国产精品三级av| 欧美电影免费提供在线观看| 在线欧美小视频| aa级大片欧美| 亚洲视频免费在线观看| 亚洲国产电影在线观看| 日韩欧美中文一区二区| 色8久久精品久久久久久蜜| 国产高清精品网站| 极品少妇一区二区三区精品视频| 午夜精品久久久久久不卡8050| 亚洲欧美综合在线精品| 久久婷婷久久一区二区三区| 欧美久久久一区| 欧美视频三区在线播放| 欧美亚洲综合色| 91久久香蕉国产日韩欧美9色| 成人高清在线视频| 99精品热视频| 91蜜桃在线免费视频| 99riav久久精品riav| 丁香天五香天堂综合| 国产成人精品免费一区二区| 国产最新精品免费| 国产盗摄视频一区二区三区| 懂色av一区二区三区免费看| 波多野结衣91| 色av综合在线| 678五月天丁香亚洲综合网| 欧美视频三区在线播放| 91精品国产麻豆| 久久婷婷色综合| 亚洲欧洲精品一区二区精品久久久 | 中文字幕一区二区三区四区 | 欧美唯美清纯偷拍| 欧美精品v国产精品v日韩精品 | 五月天网站亚洲| 日韩精品一区第一页| 另类中文字幕网| 成人激情视频网站| 欧洲视频一区二区| 日韩天堂在线观看| 欧美国产日韩精品免费观看| 亚洲欧美日韩一区二区| 天堂久久一区二区三区| 久久国产麻豆精品| 不卡一区中文字幕| 7777精品伊人久久久大香线蕉超级流畅 | 中国色在线观看另类| 亚洲综合精品久久| 看国产成人h片视频| 99免费精品在线| 日韩三级在线免费观看| 中文字幕亚洲欧美在线不卡| 午夜欧美在线一二页| 国产福利91精品| 欧美亚洲一区二区在线| 欧美精品一区二区三区久久久| 国产精品二区一区二区aⅴ污介绍| 亚洲午夜电影网| 国产电影一区二区三区| 777色狠狠一区二区三区| 国产精品色呦呦| 麻豆一区二区三| 精品视频在线看| 亚洲欧美影音先锋| 国产在线精品不卡| 欧美久久久久久久久| 国产精品九色蝌蚪自拍| 久久精品国产99国产| 欧美午夜精品一区| 国产精品久久久久aaaa| 国产一区日韩二区欧美三区| 欧美日韩在线播放一区| 中文字幕中文字幕一区二区| 久久www免费人成看片高清| 在线观看中文字幕不卡| 国产精品国产自产拍在线| 久久aⅴ国产欧美74aaa| 欧美视频一区二区三区四区| 日韩一区有码在线| 不卡免费追剧大全电视剧网站| 精品乱码亚洲一区二区不卡| 婷婷中文字幕一区三区| 在线观看一区二区视频| 亚洲精品国产高清久久伦理二区| 国产黄人亚洲片| 精品国产免费一区二区三区香蕉| 日本成人在线网站| 91精品国产乱| 麻豆精品在线观看| 日韩免费高清视频| 久久99日本精品| 欧美精品一区二区高清在线观看| 免费观看日韩电影| 精品国产1区二区| 国产激情精品久久久第一区二区| 精品国产乱码久久久久久1区2区| 久久99精品久久久久| 久久日韩精品一区二区五区| 国产激情视频一区二区在线观看| 欧美经典三级视频一区二区三区| 高清久久久久久| 国产精品人人做人人爽人人添| 国产成人免费在线视频| 国产精品理论在线观看| 91在线免费看| 日韩高清不卡在线| 久久久久久久久蜜桃| 99久久久精品| 亚洲va欧美va人人爽| 欧美一区二区三级| 国产999精品久久| 亚洲乱码国产乱码精品精小说| 欧洲激情一区二区| 美国av一区二区| 国产精品三级电影| 欧美日韩一级片在线观看| 久久精品国产免费看久久精品| 国产亚洲精久久久久久| 色欧美日韩亚洲| 激情丁香综合五月| 樱桃视频在线观看一区| 91精品国产色综合久久不卡蜜臀 | 欧美在线不卡视频| 久久99精品一区二区三区三区| 国产精品入口麻豆九色| 欧美性感一区二区三区| 国产精品影视网| 亚洲第一狼人社区| 欧美激情一区二区三区在线| 色综合激情五月| 国产精品99久久久久久久女警| 亚洲一区二区三区美女| 久久久久国产成人精品亚洲午夜 | 欧美日韩免费高清一区色橹橹| 国产在线精品免费| 五月激情六月综合| 亚洲三级理论片| 久久久久久综合| 69p69国产精品| 色综合久久综合网| 国产精品一区三区| 天天影视涩香欲综合网| 中文字幕日韩一区| 久久久亚洲高清| 91精品国产综合久久精品| 99久久精品国产观看| 国内成人自拍视频| 日本中文字幕一区二区视频 | 91麻豆精品在线观看| 国产呦精品一区二区三区网站| 亚洲福中文字幕伊人影院| 中文字幕一区不卡| 国产欧美日韩综合| 久久久久久久久蜜桃| 日韩精品一区二| 日韩欧美国产不卡| 欧美精品在线观看一区二区| 成人深夜福利app| 国产成人综合在线播放| 精品一区二区在线看| 麻豆成人91精品二区三区| 日韩va亚洲va欧美va久久| 午夜精品福利视频网站| 亚洲一区二区四区蜜桃| 亚洲免费电影在线| 亚洲一线二线三线久久久|