儲存過程是存放在資料字典中的程式塊,它可以在不同使用者和應用程式間共享,並可實現程式的優化和重用。
一、儲存過程的建立和執行
1、利用sql命令建立儲存過程
語法格式如下:
sql**
create [or
replace] procedure [schema.]procedurename[(param1 mode1 datatype1,...n)]
is | as
var1 type1;
var2 type2;
...
begin
statements; /*過程體,要執行的操作*/
end;
其中,mode1表示引數的型別,跟方法的引數一樣,有in、out和in out三種型別;datatype1表示引數的資料型別。
示例**:
sql**
create
orreplace
procedure getmodulename(mid in number,mname out
varchar)
asbegin
select
name
into mname from t_module where id=mid;
end;
2、呼叫儲存過程
語法格式如下:
sql**
exec[ute] procedurename[(param1,...n)] /*這是在命令視窗可以這樣執行*/
注:直接輸入乙個儲存過程的名字也可以執行乙個已定義的儲存過程
示例**:
sql**
declare
mid number := 15;
mname varchar(20);
begin
getmodulename(mid,mname);
dbms_output.put_line(mname || ' ********modulename');
end;
二、儲存過程的編輯修改
修改儲存過程和修改檢視一樣,雖然也有alter procedure 語句,但它是用來重新編譯儲存過程的。如果要修改已經定義的儲存過程,仍然使用create or replace procedure語句。
例如,修改上面的getmodulename儲存過程如下:
sql**
create
orreplace
procedure getmodulename(mid in number,mname out
varchar)
asbegin
if mid > 0 then
select
name
into mname from t_module where id=mid;
else
mname := null;
end if;
end;
三、刪除儲存過程
當某個儲存過程不再需要時,可以將它刪除,以釋放其占用的記憶體資源。
語法格式如下:
sql**
drop
procedure [schema.]procedurename;
例如刪除getmodulename儲存過程如下:
sql**
drop
procedure getmodulename;
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...
ORACLE儲存過程
自定義函式開始 create or replace function fn wftemplateidget templatecategoryid number,organid number,templatemode number return number istemplateid number i...
Oracle 儲存過程
create or replace procedure p 有就替換,沒有就建立 iscursor c is select from emp for update begin for v emp in c loop if v emp.deptno 10 then update emp2 set sa...