oracle 儲存過程語法

2021-07-28 02:41:27 字數 4016 閱讀 2649

-- 儲存過程語法結構

create [or replace] procudure(儲存過程關鍵字) pro_name(自定義儲存過程名稱)  

(argument1 datatype,.....)

is[as]

宣告begin

...exception

...end;

select * from emp2;

-- 建立儲存過程

create or replace procedure pro_emp2

is begin

update emp2 set sal=sal+300;

dbms_output.put_line('更新成功!');

end;

--儲存過程呼叫 1.call 儲存過程名稱() 2. exec 儲存過程

--執行無參儲存過程

call pro_emp2(); //sql window,command window 都可以執行

exec pro_emp2; //執行應用,在command window下執行

select * from emp2;

-- 建立帶有輸入(in)引數的儲存過程

create or replace procedure pro_select

(v_empno in emp.empno%type)

is v_sal emp.sal%type;

begin

select sal into v_sal from emp where empno=v_empno;

dbms_output.put_line('員工薪資:'||v_sal);

end;

--執行有參的儲存過程

call pro_emp2(7369); //sql window,command window 都可以執行

exec pro_emp2(7369); //執行應用,在command window下執行

--執行帶有輸出引數的儲存過程 out

--根據員工的編號,輸出員工的薪資

create or replace procedure pro_select

(v_empno in emp.empno%type,v_sal out emp.sal%type)

is begin

select sal into v_sal from emp where empno=v_empno;

end;

--帶有輸入,輸出引數的儲存過程呼叫

匿名程式塊執行

declare

v_sal emp.sal%type;

begin

pro_select(7369,v_sal);  --作為乙個子程式執行

dbms_output.put_line('薪資:'||v_sal);

end;

-- 帶有 in out 引數的儲存過程

create or replace procedure pro_in_out(param_num in out number)

as begin

select sal into param_num from emp where empno=param_num;

end;

--呼叫 in out 引數的儲存過程

declare

param_num number:=7369;

begin

pro_in_out(param_num);

dbms_output.put_line('薪資:'||param_num);

end;

-- 引數傳遞方式 :1.位置傳遞 2.名稱傳遞 3.組合傳遞

create or replace procedure pro_add_dept(v_deptno number,v_dname varchar2, v_loc varchar2)

asbegin

insert into dept values(v_deptno,v_dname,v_loc);  

end;

1.位置傳遞 --呼叫時按引數的排列順序

call pro_add_dept(2,'雲和學習部','老君山');

2.名稱傳遞  --按名稱傳遞是指在呼叫時按照形參與實參的名稱寫出實參所對應的形參,將形參與實參關聯起來進行傳遞

call pro_add_dept(v_loc=>'峨眉山',v_deptno=>3,v_dname=>'php培訓部');

-- 函式的建立

create or replace function 函式名稱(arg1 argtype,arg2 arg2type)

return datatype

is[as]

v_empno number;

begin

....

end;

--建立乙個生成隨機數的函式

create or replace function fun_random

return number

as v_num number;

begin

v_num:=floor(dbms_random.value(1,100));

return v_num;

end;

函式的呼叫

declare

num number;

begin

num:=fun_random();

dbms_output.put_line('隨機數:'||num);

end;

//建立輸入輸出過程

create or replace procedure proce_in(v_empno in e***.empno%type,v_ename out e***.ename%type)

as  

begin

select  ename into v_ename from e*** where empno = v_empno;

dbms_output.put_line('名稱是'||v_ename);

end;

//輸入輸出過程呼叫

declare

v_ename1 e***.ename%type;

v_empno1 e***.empno%type;

begin

v_empno1:=&empno;

proce_in(v_empno1,v_ename1);

dbms_output.put_line('名稱是'||v_ename1);

end;

//declare

v_ename1 e***.ename%type;

begin

proce_in(7369,v_ename=>v_ename1);

dbms_output.put_line('名稱是'||v_ename1);

end;

//建立函式---必須由返回值

create or replace function fun_select(f_empno in e***.empno%type,f_ename out e***.ename%type)

return e***.ename%type

as begin

select ename into f_ename from e*** where e***.empno = f_empno;

return f_ename;

end;

create or replace procedure pro_one(no in emp.empno%type)

as name emp.ename%type;

begin

select ename into name from emp where emp.empno = no;

dbms_output.put_line(name);

end;

create or replace procedure pro_emp2

isbegin

update e*** set sal= sal+200;

end;

ORACLE儲存過程語法

oracle 儲存過程的基本語法 1.基本結構create or replace procedure 儲存過程名字 引數 1 in number,引數 2 in number is 變數 1 integer 0 變數 2 date begin end 儲存過程名字 2.select into sta...

oracle儲存過程語法

儲存過程 1 create or replace procedure ordr main 通知oracle資料庫去建立乙個叫做ordr main儲存過程,如果存在就覆蓋它 4 null null pl sql語句表明什麼事都不做,這句不能刪去,因為pl sql體中至少需要有一句 儲存過程建立語法 c...

oracle 儲存過程語法

oracle 儲存過程的基本語法 1.基本結構 create or replace procedure 儲存過程名字 引數1 in number,引數2 in number is 變數1 integer 0 變數2 date begin end 儲存過程名字 2.select into statem...