日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle就业课第四课之子程序

發布時間:2024/1/23 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle就业课第四课之子程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

4、子程序

回顧

練習:

declarev_name emp.ename%type:='張三';v_job emp.job%type:='游客'; beginfor n in 1..3 loopinsert into emp(empno,ename,job,mgr,hiredate,sal,deptno) values(n*10,v_name||n,v_job,8000,to_date('2020-9-16','yyyy-MM-dd'),16000,10);end loop;commit; --提交事務exceptionwhen others thenrollback; --回滾事務end;

學習目標

1、子程序

2、存儲過程

3、函數

4、包

學習內容

1、子程序

plsql:過程化的sql語言;變量、常量、匿名塊、分支語句、循環語句

子程序:命名的程序塊,存儲過程 和 函數。

2、存儲過程

分析:完成一些指定的業務,單一的命令無法搞定;比如:轉賬,分頁操作

存儲過程:類似于java中的方法,通過多條sql命令,完成一個特定的任務。

優點:

1、執行效率高:預編譯的,存儲在服務器上,第一次創建好,系統會進行預編譯;

2、減少網絡流量:代碼封裝到過程中,只需要調用過程名就行。

3、安全性:A:小明 B:小紅 C:小青

4、重用性:代碼角度考慮。

存儲過程中能寫的命令:

1、insert,update,delete,select …into 變量

2、過程控制命令(條件、循環)

3、不能寫DDL

使用存儲過程

1、定義過程

-- 創建過程 procedure:過程 create or replace procedure sp_test1(-- 參數 ) as-- 聲明部分 (臨時變量:過程中使用的變量)beginexceptionend;

2、調用過程

1 call 過程名(參數);2、 begin過程名(參數); end;3、sqlplus: execute 過程名();

栗子:

1、轉賬:無參數

create or replace procedure sp_zhuanzhang asv_money bank.balance%type:=1000; --要轉賬的錢數 beginupdate bank set balance=balance-v_money where name='李四';update bank set balance=balance+v_money where name='張三';commit;exceptionwhen others thenrollback;end;

調用:

call sp_zhuanzhang();beginsp_zhuanzhang;end;

2、轉賬:帶參數

--flag :1 :張三---》李四 2:李四 --->張三 錢數create or replace procedure sp_zhuanzhang2 (--輸入參數--參數名 數據類型(變量聲明)flag in number,money in number ) as beginif flag=1 thenupdate bank set balance=balance-money where name='張三';update bank set balance=balance+money where name='李四';elseupdate bank set balance=balance-money where name='李四';update bank set balance=balance+money where name='張三';end if;commit;exceptionwhen others thenrollback;end;

調用:

declareflag number(1):=2;money number(5):=500; beginsp_zhuanzhang2(flag,money);end;

3、轉賬:帶輸入和輸出參數

create or replace procedure sp_zhuanzhang3 (--輸入參數--參數名 數據類型(變量聲明)flag in number,money in number,--輸出參數:調用過程后,可以在外部獲取到值的數據:類似于返回值,可以有多個balance1 out bank.balance%type,balance2 out bank.balance%type ) as beginif flag=1 thenupdate bank set balance=balance-money where name='張三';update bank set balance=balance+money where name='李四';elseupdate bank set balance=balance-money where name='李四';update bank set balance=balance+money where name='張三';end if;commit;select balance into balance1 from bank where name='張三';select balance into balance2 from bank where name='李四';exceptionwhen others thenrollback;end;

調用:

declare--聲明變量:用來接受輸出參數的值b1 bank.balance%type;b2 bank.balance%type;beginsp_zhuanzhang3(2,1000,balance2=>b1,balance1=>b2);dbms_output.put_line('張三:'||b2||'李四:'||b1); end;

過程調用中的參數傳遞

1、按照位置傳遞

2、按照名字傳值:順序無關

參數名=>變量 參數名=>變量 參數名=>變量

3、組合傳遞

? 位置傳遞+名字傳遞;位置傳遞(靠前)

3、函數

本質上跟過程一樣:必須有返回值

定義函數:

create or replace function 名字(-- 參數--名字 類型 ) return 數據類型 as beginreturn 結果; end;

例子:

1、根據部門編號查詢部門名稱

create or replace function f_getDname( -- 傳入參數 :部門編號dno dept.deptno%type ) return varchar2 --返回字符串 asv_name dept.dname%type; beginselect dname into v_name from dept where deptno=dno;return v_name; --返回結果 end;--調用select empno,ename,deptno,f_getdname(deptno) 部門 from emp where f_getdname(deptno)='外交部';

2、根據部門編號統計部門人數

create or replace function f_getdeptcount(--參數dno number )return number asv_count number(5); beginselect count(*) into v_count from emp where deptno=dno;return v_count;end;--調用 select deptno,dname,f_getdeptcount(deptno) 人數 from dept;

3、生成隨機數字的函數

create or replace function getrandomvalue return number asn number(20); beginn:=dbms_random.value(1,10);return n; end;--調用select getrandomvalue() from dual ;

調用:

declaren number(5); beginn:=getrandomvalue();dbms_output.put_line(n); end;

4、包

包:package

一系列的過程和函數

可以根據業務的不同創建不同的包:聲明變量+過程+函數;

包:

1、包規范:類似于java中的接口

2、包體:類似于實現類

創建包規范:

create or replace package 名字 is--聲明 變量 過程 函數 end 名字;

創建包體:

create or replace package body 名字 is--實現包規范定義好的過程和函數 end;

栗子:

create or replace package myfirstpackage is--聲明 全局的變量dno dept.deptno%type;--過程:向員工表中錄入數據,不能錄入重名的procedure add_emp(vno in number,vname in varchar2);--過程:根據部門編號,刪除部門信息,只能刪除沒有員工的部門procedure del_dept(vno in number); end package;--包體 create or replace package body myfirstpackage is--過程實現procedure add_emp(vno in number,vname in varchar2)asv_count number(2);-- 滿足條件的員工的數量beginselect count(*) into v_count from emp where ename=vname;if v_count>0 then--提示錯誤消息--dbms_output.put_line('');--raise_appliction_error:拋出一個自定義的錯誤消息,錯誤號:-20000-raise_application_error(-20001,'名字重復');elseinsert into emp(empno,ename) values(vno,vname);commit;end if;end;--過程實現:根據部門編號,刪除部門信息,只能刪除沒有員工的部門procedure del_dept(vno in number)asv_count number(3);begin--根據部門編號查詢該部門對應的人數select count(*) into v_count from emp where deptno=vno;if v_count=0 thendelete from dept where deptno=vno;commit;elseraise_application_error(-20002,'該部門下有員工,無法刪除');end if; end; end myfirstpackage;

總結

1、存儲過程

2、函數

相同點:

1、預編譯、執行效率高、安全性、減少網絡流量

2、輸入參數、輸出參數

不同點:

1、函數必須指定return(返回值)

3、包:包規范和包體(實現);

總結

以上是生活随笔為你收集整理的Oracle就业课第四课之子程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: a视频在线观看 | 日韩成人在线免费观看 | melody在线高清免费观看 | 色综合加勒比 | 国产日韩精品一区二区三区在线 | 欧美日韩综合一区二区三区 | 成人免费毛片日本片视频 | 麻豆视频在线观看免费网站黄 | 麻豆免费电影 | 日本一品道 | 久久五月婷 | 免费在线看污片 | ass大乳尤物肉体pics | 爽爽窝窝午夜精品一区二区 | 51国产偷自视频区视频 | 成av人片一区二区三区久久 | 亚洲一区二区三区四区在线 | 女人脱裤子让男人捅 | 丰满尤物白嫩啪啪少妇 | www.色网| 99欧美精品 | 日本捏奶吃奶的视频 | 一卡二卡三卡在线视频 | 16一17女人毛片 | 午夜婷婷网 | 国产精品--色哟哟 | 日韩香蕉视频 | 摸大乳喷奶水www视频 | 人人爽久久涩噜噜噜网站 | 欧美日韩三级视频 | 芒果视频在线观看免费 | 男女在楼梯上高潮做啪啪 | 成人性生交视频免费观看 | 一级黄色a毛片 | 亚洲欧洲综合av | 天堂网中文在线观看 | 一道本在线播放 | 激情六月天婷婷 | 91亚洲国产成人久久精品网站 | 国产xxxx18 | 成人免费高清在线观看 | 国产高潮国产高潮久久久 | 性折磨bdsm欧美激情另类 | 四虎影城库 | 1级av| 激情免费视频 | av一二三四区 | 一区二区不卡免费视频 | 国产成人精品三级麻豆 | 亚洲喷潮 | 含羞草一区二区三区 | 日本色悠悠 | 国产在线综合网 | 国产人与zoxxxx另类 | 亚洲狠狠丁香婷婷综合久久久 | 超清纯大学生白嫩啪啪 | 国产精品一线二线三线 | 亚洲高清视频在线 | 国产sm在线| 一级特级黄色片 | 国产伦精品一区二区三区 | 精品亚洲中文字幕 | 色哟哟网站在线观看 | 污污污www精品国产网站 | 国产精品无码免费在线观看 | 精品一区二区国产 | 樱花电影最新免费观看国语版 | 日日爽天天 | 色吧久久 | 伊人网综合视频 | 青青草公开视频 | 激情深爱五月 | 午夜xxx | 成人动漫一区二区 | 日韩不卡中文字幕 | 日韩免费专区 | 伊人激情综合 | 最近的中文字幕 | 成人自拍av | a级片黄色 | 免费观看成人 | 香蕉视频成人在线 | 黄色大毛片 | 国产熟妇一区二区三区aⅴ网站 | 男人天堂手机在线 | 亚洲成色www久久网站 | 日本四级电影 | 精品国产无码AV | 99热91| 久久久久久久久久免费视频 | 亚洲国产视频网站 | 亚洲一区二区三区电影 | 成人综合影院 | 亚洲精品尤物 | 国产毛茸茸| 亚洲一二三不卡 | 真人bbbbbbbbb毛片 | 久久香蕉网站 | 本道综合精品 |