Oracle使用手冊 三 儲存過程與觸發器

2021-09-30 06:46:44 字數 3171 閱讀 5858

--

儲存過程

/**/

/*--1.過程的語法結構

--參見:

--2.執行儲存過程

begin

儲存過程名;

end;

--建立好的儲存過程可以被任何程式呼叫

*/--

3.帶引數的儲存過程

/**/

/*引數型別

在pl/sql過程中,可以有3種型別的引數。

in引數:讀入引數,主程式向過程傳遞引數值。

out引數:讀出引數,過程向主程式傳遞引數值。

in out 引數:雙向引數,過程與主程式雙向交流資料。

*/--

rownum

--select * from student where sid=2 and rownum<=1;/--

select * from student where rownum<=5;

/create

orreplace

procedure

mrfutestpro

( myid student.sid

%type)

asmyname student.sname

%type;

begin

execute

immediate 

'select sname from student where sid=:1 and rownum<2

'using myid

returning 

into

myname;

dbms_output.put_line(

'我的名字:'||

myname);

exception

when

others 

then

dbms_output.put_line(

'沒有符合條件的資料');

endmrfutestpro; 

/begin

mrfutestpro(2);

end;/--

建立乙個儲存過程實現輸入乙個學生的sid編號,查詢出擁有該sid號的第乙個學生的名字.

create

orreplace

procedure

mrfuproc

(  tempid   

instudent.sid

%type ,

tempname out student.sname

%type)as

myname nvarchar2(

50);

begin

select

sname 

into

tempname 

from

student 

where

sid=

tempid 

andrownum

<2;

myname:='

姓名'||tempname;

endmrfuproc;

/declare

myid student.sid

%type;

myname student.sname

%type;

begin

myid:=10

;myname:=''

;mrfuproc(myid,myname);

dbms_output.put_line(myid);

dbms_output.put_line(myname);

end;/--

建立佇列示例

create

sequence idseqsample  

start 

with1--

從1開始計數  

increment by1

--每次加幾個  

nomaxvalue 

--不設定最大值  

minvalue 

1cache 

10--

緩衝區大小

nocycle 

--一直累加,不迴圈  

--nocache -- 不建緩衝區  /--

建立索引

create

unique

index

system.idindex 

onsystem.student(recordid); /--

建立佇列

create

sequence system.idseq start 

with

1increment by1

maxvalue 

987654321

minvalue 

1cache 

10;  /--

建立觸發器  ,實現插入student表中紀錄時,自動插入recordid欄位資料,並實現自動增量.

create

orreplace

trigger

system.idtrigger  

before 

insert

onsystem.student referencing old 

asold new 

asnew 

foreach row  

begin

select

system.idseq.nextval 

into

:new.recordid 

from

dual;  

end;  /--

測試 ,首先刪除表中的所有記錄,然後插入30條紀錄.最後檢查效果. 

delete

from

system.student;

/declare

i int:=

0;begin

fori in1

..30

loop

insert

into

system.student (sid,sname,sage)

values

(i,'

frj'

||to_char(i),'26

');endloop;

end;

/select

*from

system.student;

/

CVS使用手冊

注意 第一次匯出以後,就不是通過cvs checkout來同步檔案了,而是要進入剛才cvs checkout project name匯出的project name目錄下進行具體檔案的版本同步 新增,修改,刪除 操作。cvs的許可權管理分2種策略 基於系統檔案許可權的系統使用者管理 適合多個在lin...

sed使用手冊

原貼 http blog.chinaunix.net u 23204 showart 305602.html sed使用手冊 原創 在sed語句,正規表示式必須封閉在 中間。如 d,刪除空行。sed位址 在sed位址管理中,預設是對全域性進行操作,同時位址可以分為行位址和模式位址。如1,10d 12...

vi 使用手冊

進入vi的命令 vi filename 開啟或新建檔案,並將游標置於第一行首 vi n filename 開啟檔案,並將游標置於第n行首 vi filename 開啟檔案,並將游標置於最後一行首 vi pattern filename 開啟檔案,並將游標置於第乙個與pattern匹配的串處 vi r...