1. 程式人生 > >SQLServer -- 自定義無引數儲存過程

SQLServer -- 自定義無引數儲存過程

自定義儲過程

這裡寫圖片描述

use StuManageDB
go
if exists(Select * from sysobjects where name='usp_ScoreQuery')
drop procedure usp_ScoreQuery
go

create procedure usp_ScoreQuery --建立儲存過程
as
    --查詢考試資訊
    select Students.StudentId,StudentName,ClassName,ScoreSum=(CSharp+SQLServerDB)
    from Students
    inner join StudentClass on
Students.ClassId = StudentClass.ClassId inner join ScoreList on Students.StudentId = ScoreList.StudentId order by ScoreSum DESC go exec usp_ScoreQuery

這裡寫圖片描述

多張表的儲存過程

這裡寫圖片描述

這裡寫圖片描述

use StuManageDB
go
if exists(Select * from sysobjects where name='usp_ScoreQuery')
drop procedure usp_ScoreQuery
go

create
procedure usp_ScoreQuery --建立儲存過程 as --查詢考試資訊 select Students.StudentId,StudentName,ClassName,ScoreSum=(CSharp+SQLServerDB) from Students inner join StudentClass on Students.ClassId = StudentClass.ClassId inner join ScoreList on Students.StudentId = ScoreList.StudentId order
by ScoreSum DESC --查詢班級平均分 select ClassName,C#Avg=Avg(CSharp),DBAvg=Avg(SQLServerDB) from ScoreList inner join Students on Students.StudentId = ScoreList.StudentId inner join StudentClass on StudentClass.ClassId = Students.ClassId group by ClassName order by ClassName go exec usp_ScoreQuery

儲存過程臨時表

在處理資料過程中臨時儲存一些資料。

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

use StuManageDB
go
if exists(Select * from sysobjects where name='usp_ScoreQuery')
drop procedure usp_ScoreQuery
go

create procedure usp_ScoreQuery --建立儲存過程
as
    --查詢考試資訊
    select Students.StudentId,StudentName,ClassName,ScoreSum=(CSharp+SQLServerDB)
    from Students
    inner join StudentClass on Students.ClassId = StudentClass.ClassId
    inner join ScoreList on Students.StudentId = ScoreList.StudentId
    order by ScoreSum DESC

    --使用臨時表
    select StudentClass.ClassId,c#Avg=Avg(CSharp),DBAvg=Avg(SQLServerDB)
    into #ScoreTemp from ScoreList 
    inner join Students on Students.StudentId=ScoreList.StudentId
    inner join StudentClass on StudentClass.ClassId = Students.ClassId
    group by StudentClass.ClassId order by StudentClass.ClassId
    --將臨時表和班級查詢表關聯
    select ClassName,c#Avg,DBAvg from #ScoreTemp
    inner join StudentClass on StudentClass.ClassId=#ScoreTemp.ClassId
go
exec usp_ScoreQuery