国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server之存儲過程

2024-08-31 00:54:28
字體:
來源:轉載
供稿:網友
SQL Server之存儲過程

存儲過程的概念

存儲過程PRocedure是一組為了完成特定功能的SQL語句集合,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名稱并給出參數來執行。

存儲過程中可以包含邏輯控制語句和數據操縱語句,它可以接受參數、輸出參數、返回單個或多個結果集以及返回值。

由于存儲過程在創建時即在數據庫服務器上進行了編譯并存儲在數據庫中,所以存儲過程運行要比單個的SQL語句塊要快。同時由于在調用時只需用提供存儲過程名和必要的參數信息,所以在一定程度上也可以減少網絡流量、簡單網絡負擔。

--===========系統存儲過程==============--顯示系統數據庫exec sp_databases--顯示數據庫詳細信息exec sp_helpdb--給指定的數據庫更換名稱exec sp_renamedb 'aa','bb'--查看指定表名的詳細信息exec sp_help student--查看指定索引、視圖、存儲過程等的創建文本信息exec sp_helptext sp_help--調用存儲過程必須在批處理文件第一位if exists(select * from sysobjects where name = 'Table1')    drop table Table1go    sp_help sp_help--==========系統擴展存儲過程================use mastergo--創建文件夾bankexec xp_cmdshell 'mkdir D:/bank',no_output    if exists(select * from sysdatabases where name = 'bankDB')        drop database bankDB    go        create database bankDB    on primary    (        name = 'bankDB',        filename = 'D:/bank/bankDB.mdf',        size = 5MB,        maxsize = 10MB,        filegrowth = 15%        )log on(        name = 'bankDB_log',        filename = 'D:/bank/bankDB_log.ldf',        size = 5MB,        filegrowth = 15%    )    --調用儲存過程查看文件夾信息exec xp_cmdshell 'dir D:/bank/'--========創建存儲過程,查詢java Logic最近一次考試平均分以及未通過考試的學員名單=========use MySchoolgoif exists(select * from sysobjects where name = 'sp_getavgresult')drop proc sp_getavgresultgo--創建存儲過程實現create proc sp_getavgresult    @returnnum int output, --返回未及格的人數    @returnsum int output, --參加考試總人數    @subjectName varchar(30), --添加科目    @score int = 60 --添加輸入參數(及格分數)asdeclare @subjectId intdeclare @maxdate datedeclare @avg int--查詢java logic課程的編號select @subjectId = SubjectId from Subject where SubjectName = @subjectName--查詢java logic課程最近一次考試時間select @maxdate = MAX(ExamDate) from Result where SubjectId = @subjectId--查詢java logic課程最近一次考試的平均分select @avg = AVG(StudentResult) from Result where     SubjectId = @subjectId and ExamDate = @maxdateprint '未通過考試的人員名單:======================='--查詢java logic課程最近一次考試未通過的學生名單select studentName,studentResult from student s inner join Result r on r.StudentNo = s.StudentNo        where SubjectId = @subjectId         and ExamDate = @maxdate        and StudentResult < @score        --查詢參加考試的總人數select @returnsum = COUNT(*) from Result where ExamDate = @maxdate and SubjectId = @subjectId--查詢未及格的人數        select @returnnum = COUNT(*) from Result where ExamDate = @maxdate and SubjectId = @subjectId                                  and StudentResult < @score        if(@avg > 70)begin    print '考試結果:優秀'endelsebegin    print '考試結果:較差'endgo--=======調用儲存過程實現業務邏輯===========----declare @sum int --參加考試總人數declare @num int --未及格人數declare @percent float(2) --及格百分比--調用存儲過程exec sp_getavgresult @num output,@sum output,@subjectName = 'java logic',@score = 60print '========================================='print '參加考試人數為:' + convert(varchar(30),@sum)print '未及格人數為:' + convert(varchar(30),@num)--計算及格率set @percent = convert(float(2),(@sum - @num))/@sum * 100print '及格百分比:' + convert(varchar(30),@percent) +'%'--判斷是否要調及格分數線if(@percent > 50)begin    print '不需要調分數線。。。'endelsebegin    print '需要降低分數線。。。'end


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁怀市| 巴彦淖尔市| 洪洞县| 喀喇| 西丰县| 阿鲁科尔沁旗| 阳原县| 泰州市| 永和县| 洪洞县| 龙游县| 大悟县| 山东| 额尔古纳市| 綦江县| 金昌市| 正镶白旗| 曲阳县| 靖州| 楚雄市| 韶关市| 怀安县| 华容县| 博乐市| 晋州市| 慈利县| 阜康市| 镇赉县| 东乡县| 蓝田县| 巴中市| 乌兰县| 深水埗区| 肇东市| 浦城县| 冕宁县| 安乡县| 东城区| 耒阳市| 北川| 闻喜县|