MySQL數據庫實驗六:存儲過程建立與調用


實驗六  存儲過程建立與調用

一、實驗目的

理解存儲過程的概念、建立和調用方法。

二、實驗環境

 

三、實驗示例

1、定義一個函數,按性別計算所有學生的平均年齡。

CREATE FUNCTION aver_age(@sex char(2)) RETURNS int

       AS

       BEGIN

              DECLARE @aver int

              SELECT @aver=

                     ( SELECT avg(年齡)

                            FROM s

                            WHERE sex=@SEX

                     )

              RETURN @aver

       END

GO

如下程序對上例定義的aver_age函數進行調用。

USE student                   /*用戶函數在此數據庫中已定義*/

/*定義局部變量*/

DECLARE @sex char(2)

DECLARE @aver1 int

/*給局部變量賦值*/

SELECT @sex = ‘女’

SELECT @aver1=dbo.aver_age(@sex) /*調用用戶函數,並將返回值賦給局部變量*/

/*顯示局部變量的值*/

SELECT @aver1 AS '男性學生的平均年齡'

 

2、利用student數據庫中的S、SC表,編寫一無參存儲過程用於查詢每個學生的選課情況,然后調用該存儲過程。

CREATE PROCEDURE  xuanke_info

AS

       SELECT  S.#,sname,sex,age,c#,score

              FROM S INNER JOIN sc

                     ON s.s#=sc.s#

GO

3、使用帶參數的存儲過程

 創建存儲過程,根據student數據庫的3個表查詢指定學生的選課情況。

CREATE PROCEDURE stu_info @sname (8)

AS

       SELECT  S.#,sname,sex,age,c#,cname,score

              FROM S,SC,C

              Where s.s#=sc.s# and sc.c#=c.c# and sname=@sname

 

GO

EXECUTE  stu_info '張三'

4、使用帶OUTPUT參數的存儲過程

編寫存儲過程,根據給定的學生學號,計算該生的平均成績

Create procedure  stuavg @sno char(4) @s_sum float output,@s_avg  float output

As

  Select @s_sum=sum(score),s_avg=avg(score)

  From sc

  Where s#=@sno

 

在調用存儲過程stuavg時,存儲過程定義時的形參名和調用時的變量名不一定要匹配,不過數據類型和參數位置必須匹配。不過數據類型和參數位置必須匹配。執行語句如

DECLARE @x float,@y float

EXECUTE stuavg ‘s3’',@x OUTPUT,@y output

SELECT @x, @y

GO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM