建立儲存過程

2021-07-28 04:24:34 字數 2749 閱讀 9256

-- 儲存過程語法結構

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,10));

return v_num;

end;

函式的呼叫

declare 

num number;

begin 

num:=fun_random();

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

end;

建立儲存過程

execute pro book 當你執行該儲存過程時,所有包括在其中的sql語句都會執行,在上面的例子中,會返回所有在forum表中的記錄。當在批處理中的第乙個語句是呼叫儲存過程時,你並不需要使用execute語句。你可以簡單地提供儲存過程的名稱來執行儲存過程。比如在isql w中,可以象下面所示...

建立儲存過程

create procedure dbo procgetdata days int asbegin set nocount on added to prevent extra result sets from interfering with select statements.set nocoun...

建立儲存過程

在ms sql server 2000 中,建立乙個儲存過程有兩種方法 一種是使用transaction sql 命令create procedure,另一種是使用圖形化管理工具enterprise manager。用transaction sql 建立儲存過程是一種較為快速的方法,但對於初學者,使...