/* 7-22 知識總結? 1. 存儲過程 2.函數 3.包 */ /*1.什么是存儲過程? 語法? 存儲過程:類似於Java中的方法;完成一個特定的功能,一系列代碼 (增刪改操作和一些邏輯判斷,select ... Into 變量)構成;存在哪?存在數據庫服務器上 特點: 1、預編譯 2、可以重用 3、單獨的設置權限 4、減輕網絡的流量; 二、創建過程: 1、無參 2、輸入參數 3、輸入和輸出參數 三、調用過程: 1、語句塊中 2、Call調用 3、Execute 調用(命令行調用) */ -- create or replace procedure re1 as begin insert into emp (empno,ename,job,sal) values(9100,'嬴盪', '秦王', 1200); insert into emp (empno,ename,job,sal) values(9101,'秦孝公','諸侯',1000); commit; --設置自動提交 end; create or replace procedure re2 as begin delete from emp where empno=9100; delete from emp where empno=9101; commit; end; -- 調用 無參數的存儲過程。 -- 1.begin end; 2.call 名字(); 3.命令行 excute 名字(); begin re1; end; begin re2; end; select * from emp; call re1(); call re2(); -- 創建有參數的儲存過程? create or replace procedure re3(id1 number,id2 number) --注意 這里是沒有分號的! as begin insert into emp (empno,ename,job)values(id1,'紫霞','敗家'); insert into emp (empno,ename,job)values(id2,'至尊寶','賺錢'); commit; end; create or replace procedure re4(id1 number,id2 number) as begin delete from emp where empno in (id1 ,id2); commit; end; call re3(1111,2222); call re4(1111,2222); select * from emp; begin re3(1,2); end; begin re4(1,2); end; -- 統計數據表中的個數 臨時變量的作用 create or replace procedure re3(id1 number,id2 number) --注意 這里是沒有分號的! as v_count emp.empno%type; --定義臨時變量 目的是統計一共多少數據 begin insert into emp (empno,ename,job)values(id1,'紫霞','敗家'); insert into emp (empno,ename,job)values(id2,'至尊寶','賺錢'); commit; select count(*) into v_count from emp ; dbms_output.put_line(v_count); end; call re3(1,2); call re4(1,2); select count(*) from emp; -- 錄入后 統計數據表中的個數 定義 id 和姓名 四個參數 create or replace procedure re5( id1 in number, id2 in number, name1 in emp.ename%type, name2 in emp.ename%type, n1 out number -- 返回的參數 定義的n1 ) as begin insert into emp (empno,ename,job)values(id1,name1,'敗家'); insert into emp (empno,ename,job)values(id2,name2,'賺錢'); commit; select count(*) into n1 from emp; end; declare v_count number(2); begin re5(3,4,'盧本偉','馬飛飛',v_count); dbms_output.put_line('總數量:'||v_count); end; call re4(3,4); select * from emp;