1. 程式人生 > >數據庫高級數據庫學習--上機練習7(Transact-SQL 函數定義和調用)

數據庫高級數據庫學習--上機練習7(Transact-SQL 函數定義和調用)

... on() gin style creat 存在 條件 real sele

上機練習7

在Transact SQL中,有一類特殊的自定義函數,其返回值為一張表,該類自定義函數被稱作內嵌(聯)表值函數,其基本語句格式如下:
CREATE FUNCTION函數名稱[( {@參數名稱 [AS] 標量數據類型}[,...n])]
RETURNS TABLE 
[AS]
    RETURN [{SELECT 語句}] 

試采用該類自定義函數完成下列操作:
1、 創建一個不帶輸入參數的表值函數返回所有學生信息。 CREATE FUNCTION studentInformation() RETURNS TABLE AS RETURN SELECT
* FROM Student
2、 創建一個自定義函數,實現輸入學生姓名,查詢對應的學號。如果存在多個學號,則輸出全部結果。 CREATE FUNCTION findSno(@Sna AS char(10)) RETURNS TABLE AS RETURN SELECT Sno FROM Student WHERE Sname=@Sna DECLARE @Sname char(10) SET @Sname = 張得民 SELECT * FROM dbo.findSno(@Sname);
3、 創建一個自定義函數實現輸入課程名查詢選修了該課程的學號及其成績。
CREATE FUNCTION findSnoGrade(@Cna AS char(10)) RETURNS TABLE AS RETURN SELECT Sno,CScore FROM Score,Course WHERE Cname=@Cna AND Course.Cno = Score.Cno SELECT * FROM dbo.findSnoGrade(計算機基礎);
4、 創建一個自定義函數返回畢業班中目前無法畢業的學生信息,假設畢業班的學生學號以“14”開頭,畢業條件為已修總學分10以上。 CREATE FUNCTION
credictIsOK(@Sno AS char(10)) RETURNS real BEGIN DECLARE @sumCredict int SELECT @sumCredict = (SELECT SUM(Ccredit) FROM Score,Course WHERE Course.Cno = Score.Cno AND Score.Sno = @Sno AND Cscore IS NOT NULL) RETURN @sumCredict END CREATE FUNCTION findCannotGradate() RETURNS TABLE AS RETURN SELECT Sno FROM Student WHERE Sno LIKE 14% AND (dbo.credictIsOK(Sno)<=10 OR dbo.credictIsOK(Sno) IS NULL); SELECT * FROM dbo.findCannotGradate();

數據庫高級數據庫學習--上機練習7(Transact-SQL 函數定義和調用)