存儲過程解析

定義:

一組預編譯的SQL語句,它可以包含數據操縱語句、變量、邏輯控制語句等。

優點:

1、執行速度更快

2、允許模塊化程序設計

3、提高系統安全性

4、減少網絡流通量

創建和調用存儲過程

數據庫結構如下:

SELECT TOP 1000 [id]
      ,[writtenExam]
      ,[labExam]
      ,[stuName]
      ,[stuNo]
  FROM [pubs].[dbo].[StuInfo]

內容如下:


一、不帶參數的存儲過程

Create procedure [dbo].[pro_StuInfo]
    as

     declare @writtenAvg float,@labAvg float --用到輸出的變量

    begin       
        select @writtenAvg = AVG(writtenExam),@labAvg=AVG(labExam) from StuInfo
        print '筆試平均分:'+ convert(nvarchar(50),@writtenavg)
        print '機試平均分:'+ convert(nvarchar(50),@labAvg)
    end

--執行存儲過程

EXEC pro_StuInfo

--結果

筆試平均分:65
機試平均分:55

二、帶參數的存儲過程

Create procedure pro_StuInfo1             
        @writtenAvg float = 50,@labAvg float = 50  --參數變量
        as
    begin
        print '及格的學生如下:'
        select * from StuInfo where writtenExam >= @writtenAvg and labExam >= @labAvg
    end
    go
    --默認執行
    EXEC pro_StuInfo1

   

    --修改參數執行

   EXEC pro_StuInfo1 60,70

  

  --指定參數值

  EXEC pro_StuInfo1 @labAvg=60

 

三、帶輸出參數

Create procedure pro_StuInfo2
        @outpasscount int output,            
        @writtenAvg float = 50,@labAvg float = 50
        as
    begin
        select @outpasscount = COUNT(*) from StuInfo where writtenExam >= @writtenAvg and labExam >= @labAvg
    end
    go

--執行存儲過程

DECLARE @outpasscount int
    EXEC pro_StuInfo2 @outpasscount OUTPUT
    PRINT '及格的學生數爲:' + convert(nvarchar(50),@outpasscount)

--執行結果如下:

及格的學生數爲:3

發佈了163 篇原創文章 · 獲贊 15 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章