成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle存儲(chǔ)過程和自定義函數(shù)

存儲(chǔ) 存儲(chǔ)軟件
存儲(chǔ)過程和存儲(chǔ)函數(shù)是指存儲(chǔ)在數(shù)據(jù)庫(kù)中供所有用戶程序調(diào)用的子程序叫存儲(chǔ)過程、存儲(chǔ)函數(shù)。異同點(diǎn):存儲(chǔ)過程和存儲(chǔ)函數(shù)的相同點(diǎn):完成特定功能的程序。存儲(chǔ)過程和存儲(chǔ)函數(shù)的區(qū)別:是否用return語(yǔ)句返回值。

概述

存儲(chǔ)過程和存儲(chǔ)函數(shù)是指存儲(chǔ)在數(shù)據(jù)庫(kù)中供所有用戶程序調(diào)用的子程序叫存儲(chǔ)過程、存儲(chǔ)函數(shù)。

異同點(diǎn): 

  • 存儲(chǔ)過程和存儲(chǔ)函數(shù)的相同點(diǎn):完成特定功能的程序。
  • 存儲(chǔ)過程和存儲(chǔ)函數(shù)的區(qū)別:是否用return語(yǔ)句返回值。

存儲(chǔ)過程的創(chuàng)建和調(diào)用

***個(gè)存儲(chǔ)過程: 打印hello world

  1. createorreplace procedure sayhelloword 
  2. as 
  3.  --說明部分,as一定要寫 
  4. begin 
  5.    dbms_output.put_line('Hello World'); 
  6. end

[[222712]]

調(diào)用存儲(chǔ)過程

1.execsayhelloworld()

2.2

  1. -- 調(diào)用兩次 
  2. begin 
  3.    sayhelloworld(); 
  4.    sayhelloworld(); 
  5. end

oracle 帶參數(shù)的存儲(chǔ)過程

  1. --創(chuàng)建一個(gè)帶參數(shù)的存儲(chǔ)過程 
  2. --給指定的員工漲100塊錢的工資,并且打印漲前后漲后的薪水 
  3. createorreplace procedure raisesalary(enoinnumber)--in這是一個(gè)輸入?yún)?shù) 
  4. as 
  5.  --定義一個(gè)變量保存漲前的薪水 
  6.    psal emp.sal%type; 
  7. begin 
  8.  --得到員工漲前的薪水 
  9.    selectsalintopsalfromempwhereempno=eno; 
  10.  --給該員工漲100塊錢 
  11.    update emp setsal=sal+100whereempno=eno; 
  12.  --一般,這里不需要commit!也不需要rollback 
  13.  --注意:一般不在存儲(chǔ)過程或者存儲(chǔ)函數(shù)中,commit和rollback 
  14.  --打印 
  15.    dbms_output.put_line('漲前:'||psal||',漲后:'||(psal+100)); 
  16. end
  17. --調(diào)用: 
  18. begin 
  19.   raisesalary(7839); 
  20.   raisesalary(7566); 
  21. end

如何調(diào)試存儲(chǔ)過程

  1. 調(diào)試存儲(chǔ)過程***放到Oracle數(shù)據(jù)庫(kù)所在的系統(tǒng)或虛擬機(jī)上,解壓SQL developer ,雙擊運(yùn)行。
  2. 為了確保存儲(chǔ)過程或函數(shù)是可調(diào)試的,右鍵“以編譯并進(jìn)行調(diào)試”,點(diǎn)擊紅色按鈕“調(diào)試”
  3. 利用已寫好的調(diào)用函數(shù)進(jìn)行調(diào)試。
  4. 給調(diào)試賬戶授權(quán)
  1. grant DEBUG CONNECT SESSION ,DEBUG ANY PROCEDURE to scott; 

存儲(chǔ)函數(shù)

函數(shù)的定義

  是一個(gè)命名的存儲(chǔ)程序,可帶參數(shù),并返回一個(gè)計(jì)算值。必須有return 子句,用于返回函數(shù)值。

創(chuàng)建存儲(chǔ)函數(shù)語(yǔ)法

  1.  create or replace function 函數(shù)名(參數(shù)列表) 
  2.   return 函數(shù)值類型 
  3.   as 
  4.   begin 
  5.     PLSQL子程序體; 
  6.   end
  7. ​ 

注意 表達(dá)式中某個(gè)字段為空時(shí),表達(dá)式返回值為空。為防止含有表達(dá)式的返回值錯(cuò)誤,在可能為空的字段上加上NVL(字段名,0)。

--查詢某個(gè)員工的年收入

  1. --查詢某個(gè)員工的年收入 
  2. create or replace function queryemp_income(eno in number) 
  3. return number 
  4. as  
  5.     --定義變量接收薪水和獎(jiǎng)金 
  6.     p_sal emp.sal%type; 
  7.     p_comm emp.comm%type; 
  8. begin 
  9.   select sal,comm into p_sal,p_comm from emp where empno=eno; 
  10.   --nvl為遇空函數(shù),如果p_comm為空則返回0 
  11.   return nvl(p_comm,0)+p_sal*12; 
  12. end
  13. ​ 

out 參數(shù)

存儲(chǔ)過程和存儲(chǔ)函數(shù)都可以有多個(gè)輸入(in)和輸出參數(shù)(out),都可以通過out參數(shù)實(shí)現(xiàn)返回多個(gè)值。

  1. -- out參數(shù):查詢某個(gè)員工姓名、月薪和職位 
  2. -- 原則: 如果只有一個(gè)返回值,用存儲(chǔ)函數(shù);否則,就用存儲(chǔ)過程。 
  3. create or replace procedure queryempinfor(eno in number,pename out varchar2, 
  4.   psal out number,pjob out varchar2) 
  5. as  
  6. begin 
  7.    -- 得到該員工的姓名、月薪和職位 
  8.     select ename,sal,empjob into pename,psal,pjob from emp where empno=eno; 
  9. end
  10. ​ 

在 out 參數(shù)中訪問光標(biāo)

申明包結(jié)構(gòu)

  • 包頭(申明)
  • 包體(實(shí)現(xiàn))

案例

  1. -- 查詢某個(gè)部門中所有員工的所有信息  //ref(reference引用) cursor(光標(biāo)) 
  2. #包頭 
  3. create or replace package mypackage as 
  4. type empcursor is ref cursor
  5. procedure queryEmpList(dno in number,empList out empcursor); 
  6. end mypackage; 
  7. #包體 
  8. create or replace package body mypackage as 
  9. procedure queryEmpList(dno in number,empList out empcursor) as 
  10.  begin 
  11.    open empList for select * from emp where deptno=dno; 
  12.  end queryEmpList; 
  13. end mypackage; 
  14. ***********包體需要實(shí)現(xiàn)包頭中聲明的所有方法********************* 
  15. ​ 

在應(yīng)用程序中訪問

在java應(yīng)用程序中訪問存儲(chǔ)過程和存儲(chǔ)函數(shù)以及訪問包下的存儲(chǔ)過程,可以查看java API文檔。

 

責(zé)任編輯:武曉燕 來源: 序猿不姓程
相關(guān)推薦

2010-09-06 15:41:34

SQL函數(shù)存儲(chǔ)過程

2010-10-25 16:05:07

oracle自定義函數(shù)

2011-05-17 13:32:04

oracle

2010-04-28 12:33:36

Oracle自定義函數(shù)

2010-09-14 16:47:23

SQL自定義函數(shù)

2009-07-06 16:20:50

JSP自定義標(biāo)簽

2010-09-14 16:59:39

SQL自定義函數(shù)

2010-10-25 13:48:26

Oracle過程

2023-02-28 11:29:09

存儲(chǔ)函數(shù)MySQL

2010-05-11 13:16:21

Unix awk

2017-03-16 14:37:05

LinuxShell函數(shù)

2010-11-29 11:27:08

oracle創(chuàng)建存儲(chǔ)過

2010-09-09 09:49:18

SQL函數(shù)存儲(chǔ)過程

2021-07-15 16:41:21

Swift查詢函數(shù)

2023-10-31 09:10:39

2009-08-12 14:53:50

C#類型轉(zhuǎn)換函數(shù)

2011-07-04 14:08:02

C++

2015-02-12 15:33:43

微信SDK

2011-04-13 09:45:15

Oracle存儲(chǔ)

2011-04-15 10:56:22

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产一二三区电影 | 免费一级毛片 | 日本精品一区二区三区视频 | 欧美一区二区 | 中文字幕第一页在线 | 久久久.com | 噜噜噜噜狠狠狠7777视频 | 日韩一区二区三区视频 | 成人天堂噜噜噜 | 欧美亚洲视频在线观看 | 色毛片 | 羞羞视频在线观看网站 | 国产精品不卡 | 精产嫩模国品一二三区 | 一区二区三区四区国产精品 | 午夜精品一区二区三区免费视频 | 国产精品日女人 | 欧美精品福利视频 | 欧美mv日韩mv国产网站91进入 | 久久久久久久国产 | 国产在线观看av | www.久久| www.天天操.com| 色综合99 | 久久久久亚洲av毛片大全 | 天天操天天操 | 一级a性色生活片久久毛片波多野 | 国产高清精品一区二区三区 | 精品91av| 天天干天天插天天 | 熟女毛片 | 国产一区999 | 日韩高清不卡 | 国产99久久精品一区二区永久免费 | 黄色片网站在线观看 | 久久久女| 久久精品二区 | 精品国产第一区二区三区 | 中文字幕国产视频 | 精品成人av | 亚洲成人国产 |