學習Oracle 的儲存過程1

2021-08-30 14:44:57 字數 1599 閱讀 3239

先來看一看什麼叫儲存過程吧,

在oracle中,可以在資料庫中定義子程式,這種程式塊被稱作儲存過程(procedure)他存放在資料字典中,可以在不同的使用者和應用程式之間共享,並可實現程式的優化和重用,

有什麼優點:

第一,過程在伺服器端執行,速度快。

第二,過程執行一次後**就駐留在高速緩衝儲存器,在以後操作中,只需從高速緩衝儲存器中呼叫以編譯**執行,提高了系統效能。

第三,確保資料庫的安全,可以不授權使用者直接訪問應用程式中的一些表,而是授權使用者執行訪問這些表的過程,非表的授權使用者除非通過過程,否則不能訪問這些表。

第四,自動完成需要預先執行的任務,過程可以在系統啟動時自動執行,而不必再系統啟動後在進行手動操作,大大方便了使用者的使用,可以自動完成一些需要預先執行的任務。

先來看看幾個簡單的例子吧,

例子一:

計算指定系總學分大與40的人數;

create or replace procedure count_grade

(zym in char,person_num out number) as

begin

select count(zxf)

into person_num

from xs

where zym = zym;

end count_grade;

呵呵,夠簡單的吧

下面的用到了if   else;

例子二:

統計表xs中男女同學的人數,儲存過程使用到了乙個輸入引數和乙個輸出引數;

create or replace procedurre count_num (

*** in char,

num out number )

asbegin

if *** = '男' then

select count(xb) into num

from xs

where xb = '男';

else

select countxs) into num

from xs

where xb = '女';

end if;

end count_num;

接下來就呼叫一下吧,在呼叫過程count_num時,需要先呼叫out型別的引數。

declare

man_num number;

begin

count_num('男',man_num)

end;

再來乙個,刪除指定員工號的資訊,

create or replace procedure delemp

(v_empno in emp.empno%type) --->emp.empno%type是為了引數和emp表的empno欄位一致 as

no_result exception;

begin

delete from emp where empno=v_empno;

if sql%notfound then

raise no_result;

end if;

dbms_output.put_line('編碼為'||v_empno||'的員工已被除名!');

Oracle 儲存過程 1

建立時的基本定義與呼叫注 create or replace 沒有就建立,有的話就更新。sql create or replace procedure helloworld as 2 begin 3 dbms output.put line hello world 4 end helloworld ...

ORACLE學習筆記(1) 簡單的儲存過程

把使用者qsybk下的表tb bi person中的一些資料插入表dp psn info中。create or replace procedure qsybk.dp psn infoo is 在使用者qsybk下建立儲存過程dp psn infoo cursor cur person is 建立游標...

Oracle學習筆記之儲存過程(1)

建立乙個儲存過程 首先建立乙個資料庫 create table mytest name varchar2 30 passwd varchar2 30 要是實現的功能為使用儲存過程往mytest表裡插入一條資料 create procedure sp prol is create or replace...