plsql 存儲過程 介紹。


/* 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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM