儲存過程個人理解:
儲存過程是一種程式設計的思想,它可以給sql語句加上各種規則從而達到自己特殊的需要,提公升sql語句的執行效率和增強資料庫的安全性。
--建立表
create table employee(
empno number(5) ,--員工編號
ename varchar2(20), --名稱
sal number(10), --薪水
job varchar2(10) default 'clerk',--工種預設clerk
deptno number(10) --部門編號
--建立儲存過程
create or replace procedure add_employee(
eno number ,--員工編號
name varchar2, --名稱
salary number, --薪水
job varchar2 default 'clerk',--工種預設clerk
dno number--部門編號)is
begin
insert into add_employee
(empno,ename,sal,job,deptno)values(eno,name,salary,job,dno);
end;
--傳遞引數的三種方式
begin
--按位置傳遞引數
add_employee(1111,'mary',2000,'manager',10);
--按名字傳遞引數
add_employee(dno=>10,name=>'mary',salary=>2000,eno=>2112,job=>'manager');
--混合方式傳遞引數
add_employee(3111,name=>'mary',salary=>2000,dno=>2112,job=>'manager');
end;
--刪除儲存過程
drop procedure add_employee;
--儲存過程的引數模式
--引數傳遞主要分為三種:in,out和in out,即輸入引數、輸出引數和輸入/輸出引數。預設情況下引數型別為in
--建立儲存過程
create or replace procedure queryemployee
(v_empno in employee.empno%type,
v_ename out employee.ename%type,
v_sal in out employee.sal%type)as
begin
select ename,sal into v_ename,v_sal
from employee
where empno=v_empno;
end;
--呼叫儲存過程
declare
v1 employee.ename%type;
v2 employee.sal%type;
begin
v2:=5000;
queryemployee(1111,v1,v2);
end;
--小案例理解in和out的區別
create or replace procedure p(
a pls_integer,--預設情況下為in
b in pls_integer,
c out pls_integer,
d in out number)is
begin
if c is null then
dbms_output.put_line('null');-- dbms_output.put_line理解為列印資訊的方法
else
dbms_output.put_line(c);
end if;
dbms_output.put_line(d);
c:=a+10;
d:=10/b;
end;
declare
aa constant pls_integer:=1;
bb pls_integer:=2;
cc pls_integer:=3;
dd pls_integer:=4;
begin
p(aa,bb,cc,dd);
dbms_output.put_line('after invoking procedure p:');
dbms_output.put_line('aa='||aa);--||號理解為字元連線符結果集為:aa=1(數字)
dbms_output.put_line('bb='||bb);
dbms_output.put_line('cc='||cc);
dbms_output.put_line('dd='||dd);
end;
--新建測試視窗 執行呼叫語句
Oracle儲存過程案例集合
注 這裡沒有使用replace函式 1 建立儲存過程 orreplace procedure pro testcom p string in varchar2,replace1 in varchar2,replace2 in varchar2 is p start number 1 從哪個位置開始擷...
oracle儲存過程入門
寫個簡單的儲存過程 選用scott的emp表。給員工漲工資,大於2000的漲50,大於1000的漲100,其他的漲150 create or replace procedure addsal employno varchar2 is increment number salary number be...
Oracle儲存過程入門
1.包中定義的儲存過程,必須在包體中實現 但包體中實現的儲存過程在包中可以不定義 2.儲存過程實現中,一旦有begin.end pro name 在begin與end之間必須有 塊。3.儲存過程實現中,如果過程沒有入參與出參列表,則直接寫過程名,沒有 4.在包頭與包體中宣告中包括以下幾種定義 包頭 ...