聯(lián)大數(shù)據(jù)庫-實驗五實驗報告_第1頁
聯(lián)大數(shù)據(jù)庫-實驗五實驗報告_第2頁
聯(lián)大數(shù)據(jù)庫-實驗五實驗報告_第3頁
聯(lián)大數(shù)據(jù)庫-實驗五實驗報告_第4頁
聯(lián)大數(shù)據(jù)庫-實驗五實驗報告_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗五用戶自定義函數(shù)(2學(xué)時)一、實驗?zāi)康模簩W(xué)習(xí)、掌握用戶自定義函數(shù)的建立和使用二、實驗內(nèi)容:1、創(chuàng)建自定義函數(shù)創(chuàng)建一個用戶自定義函數(shù),并測試、查看函數(shù)返回值。1)輸入并執(zhí)行下面語句USE NorthwindGOCREATE FUNCTION fn_TaxRate (ProdID INT)RETURNS numeric(5,4)ASBEGINRETURN(SELECT CASE CategoryID WHEN 1 THEN 1.10 WHEN 2 THEN 1 WHEN 3 THEN 1.10 WHEN 4 THEN 1.05 WHEN 5 THEN 1 WHEN 6 THEN 1.05 WH

2、EN 7 THEN 1 WHEN 8 THEN 1.05 ENDFROM Products WHERE ProductID = ProdID)ENDGO2) 此函數(shù)中輸入變量是什么?返回值類型?如何定義的返回值?答:此函數(shù)輸入變量是ProdID,返回值類型是numeric(5,4) 定義返回值:SELECT CASE CategoryID WHEN 1 THEN 1.10 WHEN 2 THEN 1 WHEN 3 THEN 1.10 WHEN 4 THEN 1.05 WHEN 5 THEN 1 WHEN 6 THEN 1.05 WHEN 7 THEN 1 WHEN 8 THEN 1.05 EN

3、D FROM Products WHERE ProductID = ProdID 3) 輸入并執(zhí)行語句測試函數(shù)SELECTProductName, UnitPrice,Northwind.dbo.fn_TaxRate(ProductID) AS TaxRate,UnitPrice * Northwind.dbo.fn_TaxRate(ProductID) AS PriceWithTaxFROM Products查看結(jié)果。注意:函數(shù)可以在Select子句后面調(diào)用。2、返回值為多值的自定義函數(shù)創(chuàng)建函數(shù)返回多列多值。1)輸入并執(zhí)行下面語句USE NorthwindGOCREATE FUNCTION

4、fn_LargeFreight (FreightAmt money)RETURNS TABLEAS RETURN( SELECTS.ShipperID, S.CompanyName,O.OrderID, O.ShippedDate, O.Freight FROM Shippers AS S JOIN Orders AS O ON S.ShipperID = O.ShipVia WHERE O.Freight FreightAmt)函數(shù)中輸入變量是什么?返回值類型?如何定義的返回值?答:答:函數(shù)中輸入變量是FreightAmt,返回值類型是money 定義返回值:SELECT S.Shipper

5、ID, S.CompanyName, O.OrderID, O.ShippedDate, O.Freight FROM Shippers AS S JOIN Orders AS O ON S.ShipperID = O.ShipVia WHERE O.Freight FreightAmt2)輸入并執(zhí)行語句測試函數(shù)SELECT * FROM fn_LargeFreight(600)查看結(jié)果3、返回值為多值的自定義函數(shù)本實驗創(chuàng)建的函數(shù)也是返回多列多值,注意與上面實驗的差別。1)輸入并執(zhí)行下面語句USE NorthwindGOCREATE FUNCTION fn_FindReports (InEmp

6、loyeeIDchar(5)RETURNS reports TABLE(EmployeeIDchar(5) PRIMARY KEY,Name nvarchar(40) NOT NULL,Title nvarchar(30),MgrEmployeeIDint,processedtinyint default 0)ASBEGININSERT reportsSELECT EmployeeID, Name = FirstName + + LastName, Title, ReportsTo, 0FROM EMPLOYEESWHERE ReportsTo = InEmployeeIDRETURN END

7、GO此函數(shù)中輸入變量是什么?返回值類型是什么?如何定義的返回值?答:此函數(shù)中輸入變量是InEmployeeID,返回值類型是TABLE,定義返回值:INSERT reports SELECT EmployeeID, Name = FirstName + + LastName, Title, ReportsTo, 0 FROM EMPLOYEES WHERE ReportsTo = InEmployeeID 3)輸入并執(zhí)行語句測試函數(shù)SELECT EmployeeID,Name,Title,MgrEmployeeID FROM dbo.fn_FindReports(5)查看結(jié)果。4 設(shè)計一個函數(shù)

8、,在OrderMag數(shù)據(jù)庫中,輸入零件類別,返回該類別零件的平均存量、最高存量和該類零件的總數(shù)量。CREATE FUNCTION fund_Pno (Pptype char(10) RETURNS TABLE AS RETURN ( SELECT avg(Pnum) Avgp,max(Pnum) Maxp,sum(Pnum) Sump FROM Store WHERE Ptype= Pptype ) select * from fund_Pno(傳動)5 設(shè)計一個函數(shù),在OrderMag數(shù)據(jù)庫中,輸入訂單號,返回該訂單所涉及的零件名稱和類別。USE OrderMag GO CREATE FUN

9、CTION fpname (fOno varchar(60) RETURNS TABLE AS RETURN ( select O.Ono,S.Pname,S.Ptype from Store AS S join Orders As O On O.Pno=S. where O.Ono= fOno ) select * from fpname(O1) 6 設(shè)計一個函數(shù),在OrderMag數(shù)據(jù)庫中,根據(jù)零件庫存量的大小,大于500的認為是充足,在100-500之間的是均衡,小于100的為面臨缺貨。 USE OrderMag GO CREATE FUNCTION fpnum4() RETURNS T

10、able AS RETURN ( SELECT Pnum Range= CASE WHEN Pnum500 THEN 充足 WHEN Pnum BETWEEN 100 and 500 THEN 均衡 WHEN Pnum100 THEN 面臨缺貨 END FROM Store ) select * from fpnum4() 7 設(shè)計一個函數(shù),根據(jù)輸入的數(shù)值,計算從1加到該數(shù)的和(如輸入5,則計算1+2+3+4+5=15,輸出為15)。 create function sumn(num int) returns int as begin declare i int; declare s int;

11、 set i=1; set s=0; while (i=num) begin set s=s+i; set i=i+1; end return s end print 從1加到該數(shù)的和是:+cast(dbo.sumn(5) as varchar) 三、完成實驗報告(1)回答實驗指導(dǎo)書中提出的問題(2)用戶自定義函數(shù)在定義與使用上有何需要注意的問題?與存儲過程有何不同?答:在SQL SERVER中調(diào)用自定義函數(shù)時,必須在自定義函數(shù)前加上創(chuàng)建此函數(shù)的用戶存儲過程: 存儲過程可以使得對數(shù)據(jù)庫的管理、以及顯示關(guān)于數(shù)據(jù)庫及其用戶信息的工作容易得多。存儲過程是SQL 語句和可選控制流語句的預(yù)編譯集合,以一

12、個名稱存儲并作為一個單元處理。存儲過程存儲在數(shù)據(jù)庫內(nèi),可由應(yīng)用程序通過一個調(diào)用執(zhí)行,而且允許用戶聲明變量、有條件執(zhí)行以及其它強大的編程功能。 存儲過程可包含程序流、邏輯以及對數(shù)據(jù)庫的查詢。它們可以接受參數(shù)、輸出參數(shù)、返回單個或多個結(jié)果集以及返回值。 可以出于任何使用SQL 語句的目的來使用存儲過程,它具有以下優(yōu)點:1、 可以在單個存儲過程中執(zhí)行一系列SQL 語句。2、可以從自己的存儲過程內(nèi)引用其它存儲過程,這可以簡化一系列復(fù)雜語句。3、存儲過程在創(chuàng)建時即在服務(wù)器上進行編譯,所以執(zhí)行起來比單個SQL 語句快。 用戶定義函數(shù):Microsoft SQL Server 2000 允許創(chuàng)建用戶定義函數(shù)。與任何函數(shù)一樣,用戶定義函數(shù)是可返回值的例程。根據(jù)所返回值的類型

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論