儲存過程與觸發器

2022-12-25 00:45:03 字數 2899 閱讀 9830

1.建立乙個加密過程

建立乙個名稱為p_jiami的加密儲存過程,該過程用來查詢一門課程也沒有選修的學生的學號與姓名。最後,執行該儲存過程。

create procedure p_jiami1

with encryption

asselect 學號,姓名

from 學生基本檔案

where 學號not in (select 學號from 成績)

exec p_jiami1

2.建立帶輸入引數的儲存過程

建立乙個帶引數的儲存過程——成績查詢,當任意輸入乙個成績時,該儲存過程將從三個表(「學生基本檔案」表、「課程資訊」表、「成績」表)中查詢出大於或等於該成績的學生學號、姓名、課程名和課程成績。最後,執行儲存過程,查詢獲得學分的學生(即成績大於或等於50分)

gocreate procedure selectscorewithinput

@score int

as select 學生基本檔案.學號,姓名,課程名稱,成績

from 學生基本檔案,課程資訊,成績

where 學生基本檔案.學號= 成績.學號and 成績.課程代號= 課程資訊.課程代號and 成績》= @score

gogo

exec selectscorewithinput @score = 50

go3.建立帶輸出引數的儲存過程

在選課管理庫中建立乙個儲存過程——單科成績分析,當任意輸入乙個存在的課程名時,該儲存過程將統計出該門課程的平均成績、最高成績和最低成績。

create procedure 單科成績查詢

@課程名稱char(10),@**g int output,@max int output,@min int output

asselect @**g=**g(成績) from 課程資訊a,成績b where a.課程代號=b.課程代號and 課程名稱=@課程名稱

select @max=max(成績) from 課程資訊a,成績b where a.課程代號=b.課程代號and 課程名稱=@課程名稱

select @min=min(成績) from 課程資訊a,成績b where a.課程代號=b.課程代號and 課程名稱=@課程名稱

godeclare @**g int

declare @max int

declare @min int

exec 單科成績查詢@課程名稱=高等數學@**g output,@max output,@min output

print @**g,@max,@min

4.建立乙個查詢儲存過程st_proc_bj,該儲存過程將返回計算機系的班級名稱。

create procedure st_proc_bj1

@班級名稱char(10) output

asselect @班級名稱=班級from 學生基本檔案where 專業='計算機'

godeclare @班級名稱int

exec st_proc_bj1 @班級名稱output

print @班級名稱

1. 建立乙個insert觸發器

在student資料庫中建立乙個名為insert_xibu的insert觸發器,儲存在「專業」表中。當使用者向「專業」表中插入記錄時,如果插入了在「系部」表中沒有的系部**,則提示使用者不能插入記錄,否則提示插入成功。

create trigger insert_xibu on 專業

instead of insert

asdeclare @xibu char(2)

select @xibu = 系部.系部**

from 系部,inserted

where 系部.系部**= inserted.系部**

if @xibu <> ''

print '記錄插入成功'

else

begin

print '系部**不存在系部表中,不能插入記錄,插入終止'

rollback transaction

endgo

2. 建立乙個delete觸發器

在student資料庫中建立乙個名為delete_zhye的delete觸發器,儲存在「專業」表中。當使用者刪除「專業」表中的記錄時,如果「班級」表引用了此記錄的***碼,則提示使用者不能刪除記錄,否則提示記錄已刪除。

goif exists (select name from sysobjects

where name= 'delete_zhye' and type = 'tr')

drop trigger delete_zhye

gocreate trigger delete_zhye

on 專業

instead of delete

asif (select count (*) from 班級inner join deleted

on 班級.***碼= deleted.***碼) > 0

begin

print('該專業被班級表所引用,你不可以刪除此條記錄,刪除將終止')

rollback transaction

endelse

print '記錄已刪除'

godelete from 專業where ***碼= 0203

3. 建立乙個update觸發器

在student資料庫中建立乙個名為update_zymc的update觸發器,儲存在「專業」表

中。當使用者更新「專業」表中的專業名稱時,提示使用者不能修改專業名稱。

use student

gocreate trigger update_zymc

on [dbo].[專業]

for update

asif update(專業名稱)

begin

print』不能修改專業名稱』

rollback transaction

endgo

儲存過程與觸發器

附頁 例8 1 建立乙個儲存過程,輸出所有學生的姓名,課程名稱和期末成績資訊。create procedure student score asselect sname,cname,final from student s,course c,score sc where and 例8 2 建立乙個儲...

游標 儲存過程 觸發器

本文介紹了游標 儲存過程 觸發器中利於sql server高效處理資料的方法。關鍵詞 sql server 游標 儲存過程 觸發器 高效處理資料 sql server是一種關係型資料庫管理系統,能夠與windows平台緊密整合,以一種簡單的方式來完成各種複雜的任務。sql server管理大量資料,...

訓練六 觸發器

一 訓練目的 1 熟悉基本rs觸發器 d觸發器 jk觸發器 門控制鎖存器的邏輯功能與特點。2 掌握各功能端的作用。3 學會使用雙蹤示波器波形和比較相位。二 儀器及材料 a tds 4數電實驗箱 雙蹤示波器 數字萬用表。b 參考元件 與非門74ls00 d觸發器74ls74 jk觸發器74ls112。...