SQL Server 7.0 入門(六)---建立預存程序體

來源:互聯網
上載者:User
server|預存程序 建立預存程序體
    預存程序邏輯駐留在預存程序體中。一個預存程序體中可以包含任意條Transact SQL語句。下面的Transact SQL語句不能在任何預存程序體中出現:
    · CREATE DEFAULT
    · CREATE TRIGGER
    · CREATE PROCEDURE
    · CREATE VIEW
    · CREATE RULE
1、 局部變數
局部變數保持預存程序中間值。當一個值在預存程序中需要多次,或者某個查詢的結果需要在隨後的查詢中使用時,需要使用局部變數。在這些情形下,值被儲存在局部變數中,並可用於將來的使用。本地變數的名稱以“@”符號開頭。變數的名稱可以包含字元和數值。局部變數在使用前需要進行型別宣告。對局部變數進行賦值需要使用SELECT語句。SELECT可以從一個表中檢索出值並將其賦給某個變數,也可以給變數賦一個常量值。一個簡單的SELECT語句可以給多個局部變數賦值。
例如:
DECLARE @var1 integer, @var2 varchar(20)
SELECT @var1 = 32,
      @var2 = ‘MyAge’
如果從SELECT查詢中沒有返回任何資料,而SELECT又要將資料的值賦予局部變數,則該局部變數的值將不會發生改變。
2、 條件詞句
預存程序中提供的條件陳述式包括:
· IF……ELSE語句。
· WHILE語句。
1) IF……ELSE語句。在該語句中包含三個部分:布爾運算運算式,IF語句塊和ELSE語句塊。文法如下:
IF (boolen_expr)
 {statements}
ELSE
 {statements}
在IF或ELSE語句塊中可以有多條語句,這種情形下,需要語句BEGIN和END來標誌語句塊。
2) WHILE語句。WHILE語句用於處理直到某個條件為TRUE前重複執行的語句。文法如下:
WHILE (boolen_expr)
 BEGIN
 statement(s)
BREAK
Statement(s)
CONTINUE
       END
      BEGIN和END語句標誌迴圈體。BREAK語句結束迴圈的執行(即走到END語句之後)。CONTINUE語句將控制處理過程回到迴圈的開始處(即BEGIN語句的右邊)。
      注意:如果有兩個或多個WHILE迴圈被嵌套,則內部的BREAK退出的是次外層的迴圈。內部迴圈結束之後的所有語句在內部迴圈執行之後才能繼續執行。

3、 GOTO語句
在預存程序的執行中,語句是順序執行的。GOTO語句則是用來打破這種語句執行的順序,它立即跳到某條語句上執行,而這條語句往往不緊跟在前一語句之後。GOTO語句與一個標誌(Label)一起使用,該標誌用來標識一條語句。
例如:
USE pubs
GO

DECLARE @num int
SELECT
IF @num = 0
    GOTO Err
ELSE
    BEGIN
    PRINT ‘authors found’
    SELECT * FROM authors
    GOTO Last
    END
Err: PRINT ‘no authors found’
Last: PRINT ‘Finish execution’
GO
4、 RETURN語句
RETURN語句用於無條件的退出預存程序。RETURN之後的任何語句都不再執行。RETURN語句可以給調用語句返回一個值,但不能返回NULL值。SQL Server經常為預存程序返回一個狀態值。如果成功地執行,則返回一個0,如果出現了錯誤,則返回一個為負數的錯誤碼。
預存程序返回的錯誤碼

說    明

說    明

0
過程執行成功
-8
發生了非致命的內部問題

-1
漏掉了對象
-9
達到了系統極限

-2
發生了資料類型錯誤
-10
發生了致命的內部不一致錯誤

-3
該處理被選擇成了死結的犧牲者
-11
發生了致命的內部不一致錯誤

-4
發生了許可權錯誤
-12
表或索引被破壞

-5
發生了語法錯誤
-13
資料庫被破壞

-6
發生了混雜的使用者錯誤
-14
發生了硬體錯誤

-7
資源錯誤,如空間不夠等


5、 使用遊標(CURSOR)在需要一行一行處理時,遊標十分有用。遊標可以開啟一個結果集合(按照指定的標準選擇的行),並提供在結果集中一行一行處理的功能。基於遊標的類型,可以對其進行復原或者前進。在使用遊標時需要5個步驟:

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。