學php動態(tài)網(wǎng)站開發(fā)好就業(yè)搜索引擎營銷策略有哪些
簡介
存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,它大大提高了SQL語句的功能和靈活性。存儲過程編譯后存儲在數(shù)據(jù)庫中,所以執(zhí)行存儲過程比執(zhí)行存儲過程中封裝的SQL語句更有效率。
語法
?存儲過程:
一組為了完成某種特定功能的sql語句集,
存儲在數(shù)據(jù)庫中,經(jīng)過一次編譯后,再次調(diào)用不需要再次編譯.
用戶通過存儲過程的名字進行調(diào)用存儲過程
優(yōu)點:
效率高,安全性好,復用性強,可維護性高,不用傳輸大量的sql
存儲過程,游標,視圖的區(qū)別
在存儲過程的語法中 可以使用as或is
在游標中只能使用is
在視圖中只能使用as
定義語法:
create or replace procedure存儲過程名(推薦proc_)
as |is
? ? --定義變量
begin
? ? --存儲過程執(zhí)行的語句
end;
調(diào)用語法:
call存儲過程名();
示例
?無參無返回值
-- 1.創(chuàng)建一個最簡單的存儲過程,只輸出︰你好存儲過程------(無參無返回值)--定義
create or replace procedure proc_out_info
as
begin
dbms_output.put_line('你好,存儲過程');
end;
--調(diào)用
call proc_out_info();--不可以省略2.創(chuàng)建兩個變量,在存儲過程中輸出這兩個變量的值-李四,,成績90 ---李四的數(shù)學成績?yōu)?0分
--定義
create or replace procedure proc_out_info_2
ismyname varchar2(50):='李四";score number;
beginscore: =90;dbms_output.put_line(mynamell'的數(shù)學成績?yōu)?#39;||scorell'分');
end;
--調(diào)用
call proc_out_info_2();
注意事項:1.如果存儲過程沒有輸入?yún)?shù)及輸出參數(shù)()可以不寫
2.如果存儲過程包含輸入?yún)?shù)則必須要寫(),
同時使用in來標明該參數(shù)為輸入?yún)?shù)
存儲過程名(參數(shù)名1 in參數(shù)類型1 ,參數(shù)名2 in參數(shù)類型2)
帶參無返回
--6查詢根據(jù)部門編號統(tǒng)計該部門的員工人數(shù)并輸出------帶參無返回
--select count(*) from emp where depid=3;
--分析:因為不知都部門編號因此采用帶一個輸入?yún)?shù)的存儲過程,
--一個輸入?yún)?shù):類型number
--定義
create or replace procedure proc_emp_depid(dno in number )
isnum number : =0;
beginselect count(*) into numfrom empwhere depid=dno;dbms_output.put_line( '部門編號為'l|dno||'的員工個數(shù)為'||num);
end;
--調(diào)用
--查詢部門編號為1的員工人數(shù)
call proc_emp_depid(1);
--查詢部門編號為3的員工人數(shù)
call proc_emp_depid(3);
--查詢部門編號為5的員工人數(shù)
call proc_emp_depid(5);
?
--7.根據(jù)學生姓名及學生性別查詢符合條件的學生個數(shù)并輸出
--帶幾個輸入?yún)?shù),分別什么類型
--姓名性別, varchar() char()
--定義
create or replace PROCEDURE proc_emp_name( sname in varchar2,ssex in char)
isnum number : =0;beginselect count(*) into numfrom studentwhere stuname like concat(concat( %' , sname), '%') and sex=ssex;dbms_output.put_line('學生個數(shù)為‘||num);
end;
--調(diào)用
callproc_emp_name( '李", '0');
無參帶返回值
-- 類似 java 中 帶有 返回值的調(diào)用-- 無參帶返回值, out 輸出參數(shù), 存儲過程的返回值
create or replace procedure proc_lian_1(name out VARCHAR2)
as
beginname:='你好存儲過程';
end;--調(diào)用
declare s VARCHAR2(50);
beginproc_lian_1(s);dbms_output.put_line(s);
end;
?帶參帶返回值
--帶參帶返回值-- 定義輸入輸出參數(shù)的形式, 來實現(xiàn), 根據(jù) 年級編號統(tǒng)計 學生的總數(shù)-- 年級編號 輸入?yún)?shù)
-- 學生總數(shù) 輸出參數(shù)create or replace procedure proc_lian_1(gradeId in number,stucount out number)
is
beginselect count(*) into stucountfrom studentwhere gid=gradeId;end;-- 調(diào)用declare s number; gid number;
begingid:=2;proc_lian_1(gid,s); --調(diào)用存儲過程dbms_output.put_line('年級編號為'||gid||'的學生人數(shù)為'||s); --輸出結(jié)果
end;