觸發器及儲存過程 procedure

2021-10-01 16:23:05 字數 2761 閱讀 7512

儲存過程(procedure):

建立乙個名為p1的儲存過程,功能是查詢成績表中成績為空的學生學號,姓名;執行p1。

create

procedure p1

asselect sno,sname

from student

where sno in

(select sno

from sc

where grade is

null

)

exec p1//exec 執行乙個儲存過程
建立乙個名稱為p2的儲存過程,該儲存過程的功能是向course資料表中插入一條記錄(包含cno,cname,credit),新記錄的值由引數提供;執行儲存過程p2,將課程號為c5,課程名為軟體工程,學分為3的課程資訊插入到課程表中。

create

procedure p2

(@cno

char(4

),//@cno相當於定義的引數

@cname

nchar(40

),@credit

smallint)as

insert

into course values

(@cno

,@cname

,@credit

)//values 資料,值

exec p2 'c5'

,'軟體工程'

,'3'

//exec 執行乙個儲存過程,在這裡相當於給引數賦值。

建立乙個名稱為p3的儲存過程,該儲存過程的功能是從成績表中查詢指定課程的最高分和最低分,列名為「最高分」,「最低分」;執行儲存過程p3,檢視課程名為「c語言」的最高分,最低分。

create

procedure p3 @課程名 char(30

)asselect

max(grade) 最高分,

min(grade) 最低分//max() 最大值函式 min() 最小值函式

from sc

where cno=

(select cno

from course

where cname= @課程名

)

exec p3 'c語言'
定義能夠返回值的儲存過程。建立乙個名稱為p4的儲存過程。該儲存過程的功能是從資料表s中根據學號查詢某一同學的姓名,及選修課程的課程名及成績。查詢的結果由引數@sn, @cname ,@grade返回;

執行儲存過程p4,查詢學號為1640的姓名、選修課程的課程名及成績。

create

procedure p4

(@sno

varchar(6

),//定義引數

@sn nvarchar(

10) output,

//有的儲存過程需要輸出結果到乙個變數中,有的卻不需要。需要記錄輸出結果時帶上output就可以把執行完後的結果賦給變數,然後拿到那個值可以作為需要的時候使用了。

@cname nvarchar(

10) output,

@grade

int output)as

select

@sn=sname,

@cname

=cname,

@grade

=grade//給引數賦值

from student,sc,course

where sc.sno=

@sno

and student.sno=

@sno

and course.cno=sc.cno

declare

@snvarchar(6

),@cname nvarchar(20)

,@grade

int//declare 宣告變數

exec p4 1640

,@sn output,

@cname output,

@grade output

select

@sn 姓名,

@cname 課程名,

@grade 成績

觸發器:

建立乙個觸發器trigger1,在學生表student中刪除某乙個學生時,在選課表sc中該學生的選課記錄也全部被刪除。

create

trigger trigger1

on student

after

delete

asdelete

from sc

where sc.sno in

(select sno from deleted)

//deleted 在delete表中臨時儲存了被刪除或被更新前的記錄行

設計乙個ddl觸發器trigger2,禁止修改和刪除當前資料庫中的任何表,提示語句為「不能刪除或修改資料庫!」。

create

trigger trigger2

ondatabase

for drop_table,alter_table

asprint

'不能刪除或修改資料庫!'

rollback

//資料庫裡做修改後(update ,insert , delete)未commit(提交)之前使用rollback可以恢復資料到修改之前。

儲存過程及觸發器

了解儲存過程的概念 優點 熟練掌握建立儲存過程的方法 熟練掌握儲存過程的呼叫方法 了解觸發器的概念 優點 掌握觸發器的方法和步驟 掌握觸發器的使用 oracle,plsql 功能要求 借書時要求輸入借閱流水號,借書證號,圖書編號。即該儲存過程有3個輸入引數 借書時,借書日期為系統時間。圖書的是否借出...

觸發器 儲存過程

1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...

儲存過程 觸發器

觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,就會自動執行觸發器所定義的sql 語句,從而確保對資料的處理必須符合由這些sql 語句所定義的規則。觸發器的主要作用就是其能夠實現由主鍵和外來鍵...