計(jì)算機(jī)等級(jí)三級(jí)數(shù)據(jù)庫(kù)SQLServer7.0入門(六)

字號(hào):

建立存儲(chǔ)過(guò)程體
    存儲(chǔ)過(guò)程邏輯駐留在存儲(chǔ)過(guò)程體中。一個(gè)存儲(chǔ)過(guò)程體中可以包含任意條 Transact SQL 語(yǔ)句。
    下面的 Transact SQL 語(yǔ)句不能在任何存儲(chǔ)過(guò)程體中出現(xiàn):
    · CREATE DEFAULT
    · CREATE TRIGGER
    · CREATE PROCEDURE
    · CREATE VIEW
    · CREATE RULE
     1 、 局部變量局部變量保持存儲(chǔ)過(guò)程中間值。當(dāng)一個(gè)值在存儲(chǔ)過(guò)程中需要多次,或者某個(gè)查詢的結(jié)果需要在隨后的查詢中使用時(shí),需要使用局部變量。在這些情形下,值被存儲(chǔ)在局部變量中,并可用于將來(lái)的使用。本地變量的名稱以“ @ ”符號(hào)開頭。變量的名稱可以包含字符和數(shù)值。局部變量在使用前需要進(jìn)行類型聲明。對(duì)局部變量進(jìn)行賦值需要使用 SELECT 語(yǔ)句。 SELECT 可以從一個(gè)表中檢索出值并將其賦給某個(gè)變量,也可以給變量賦一個(gè)常量值。一個(gè)簡(jiǎn)單的 SELECT 語(yǔ)句可以給多個(gè)局部變量賦值。
    例如: DECLARE @var1 integer, @var2 varchar(20) SELECT @var1 = 32, @var2 = ‘ MyAge ’如果從 SELECT 查詢中沒有返回任何數(shù)據(jù),而 SELECT 又要將數(shù)據(jù)的值賦予局部變量,則該局部變量的值將不會(huì)發(fā)生改變。
    2 、 條件詞句存儲(chǔ)過(guò)程中提供的條件語(yǔ)句包括:
    · IF……ELSE 語(yǔ)句。
    · WHILE 語(yǔ)句。
    1 )IF……ELSE 語(yǔ)句。在該語(yǔ)句中包含三個(gè)部分:布爾運(yùn)算表達(dá)式, IF 語(yǔ)句塊和 ELSE 語(yǔ)句塊。
    語(yǔ)法如下: IF (boolen_expr)
    {statements} ELSE
    {statements} 在 IF 或 ELSE 語(yǔ)句塊中可以有多條語(yǔ)句,這種情形下,需要語(yǔ)句 BEGIN 和 END 來(lái)標(biāo)志語(yǔ)句塊。
    2 ) WHILE 語(yǔ)句。
    WHILE 語(yǔ)句用于處理直到某個(gè)條件為 TRUE 前重復(fù)執(zhí)行的語(yǔ)句。
    語(yǔ)法如下: WHILE (boolen_expr)
    BEGIN
    statement(s) BREAK Statement(s) CONTINUE
    END
    BEGIN 和 END 語(yǔ)句標(biāo)志循環(huán)體。 BREAK 語(yǔ)句結(jié)束循環(huán)的執(zhí)行(即走到 END 語(yǔ)句之后)。
    CONTINUE 語(yǔ)句將控制處理過(guò)程回到循環(huán)的開始處(即 BEGIN 語(yǔ)句的右邊)。
    注意:如果有兩個(gè)或多個(gè) WHILE 循環(huán)被嵌套,則內(nèi)部的 BREAK 退出的是次外層的循環(huán)。內(nèi)部循環(huán)結(jié)束之后的所有語(yǔ)句在內(nèi)部循環(huán)執(zhí)行之后才能繼續(xù)執(zhí)行。
    3 、GOTO 語(yǔ)句在存儲(chǔ)過(guò)程的執(zhí)行中,語(yǔ)句是順序執(zhí)行的。
     GOTO 語(yǔ)句則是用來(lái)打破這種語(yǔ)句執(zhí)行的順序,它立即跳到某條語(yǔ)句上執(zhí)行,而這條語(yǔ)句往往不緊跟在前一語(yǔ)句之后。 GOTO 語(yǔ)句與一個(gè)標(biāo)志( Label )一起使用,該標(biāo)志用來(lái)標(biāo)識(shí)一條語(yǔ)句。
    例如: USE pubs GO DECLARE @num int SELECT IF @num = 0 GOTO Err ELSE
    BEGIN
    PRINT ‘ authors found ’
    SELECT * FROM aGO
    4 、RETURN 語(yǔ)句 RETURN 語(yǔ)句用于無(wú)條件的退出存儲(chǔ)過(guò)程。 RETURN 之后的任何語(yǔ)句都不再執(zhí)行。 RETURN 語(yǔ)句可以給調(diào)用語(yǔ)句返回一個(gè)值,但不能返回 NULL 值。 SQL Server 經(jīng)常為存儲(chǔ)過(guò)程返回一個(gè)狀態(tài)值。如果成功地執(zhí)行,則返回一個(gè) 0 ,如果出現(xiàn)了錯(cuò)誤,則返回一個(gè)為負(fù)數(shù)的錯(cuò)誤碼。
    存儲(chǔ)過(guò)程返回的錯(cuò)誤碼
    值
    說(shuō)明值
    說(shuō)明
    0程執(zhí)行成功
    -8 發(fā)生了非致命的內(nèi)部問(wèn)題
    -1 漏掉了對(duì)象
    -9 達(dá)到了系統(tǒng)極限
    -2 發(fā)生了數(shù)據(jù)類型錯(cuò)誤
    -10 發(fā)生了致命的內(nèi)部不一致錯(cuò)誤
    -3 該處理被選擇成了死鎖的犧牲者
    -11 發(fā)生了致命的內(nèi)部不一致錯(cuò)誤 -4 發(fā)生了權(quán)限錯(cuò)誤
    -12 表或索引被破壞
    -5 發(fā)生了語(yǔ)法錯(cuò)誤
    -13 數(shù)據(jù)庫(kù)被破壞
    -6 發(fā)生了混雜的用戶錯(cuò)誤
    -14 發(fā)生了硬件錯(cuò)誤
    -7 資源錯(cuò)誤,如空間不夠等
    5 、使用游標(biāo)( CURSOR )在需要一行一行處理時(shí),游標(biāo)十分有用。游標(biāo)可以打開一個(gè)結(jié)果集合(按照指定的標(biāo)準(zhǔn)選擇的行),并提供在結(jié)果集中一行一行處理的功能。基于游標(biāo)的類型,可以對(duì)其進(jìn)行回滾或者前進(jìn)。
    Examda提示:在使用游標(biāo)時(shí)需要5 個(gè)步驟:
    uthors
    GOTO Last
    END Err: PRINT ‘
     no authors found ’
    Last: PRINT ‘ Finish execution ’