資源描述:
《sqlserver存儲過程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1Transact-SQL程序設(shè)計在Transact-SQL語言中標(biāo)準(zhǔn)的SQL語句暢通無阻。Transact-SQL也有類似于SQL語言的分類不過做了許多擴(kuò)充。本章中,我們介紹了標(biāo)準(zhǔn)SQL語言的語法及其基本使用方法,在此只介紹Transact-SQL語言中的其它部分。1變量2流程控制命令3其它命令4常用函數(shù)21.變量Transact-SQL中使用兩種變量:局部變量和全局變量。1.局部變量局部變量是用戶可自定義的變量,它的作用范圍僅在程序內(nèi)部。在程序中通常用來儲存從表中查詢到的數(shù)據(jù),或當(dāng)作程序執(zhí)行過程中暫存變量使用。局部變量必須以@開頭,而且必須先用D
2、ECLARE命令說明后才可使用。其說明形式為:DECLARE@變量名變量類型[,@變量名變量類型…]31.變量在Transact-SQL中不能像在一般的程序語言中一樣使用“變量=變量值”來給變量賦值,必須使用SELECT或SET命令來設(shè)定變量的值。其語法如下:SELECT@局部變量=變量值SET@局部變量量=變量值【例】聲明一個長度為8個字符的變量id,并賦值。declare@idchar(8)select@id=‘10010001’42.全局變量全局變量是SQLServer系統(tǒng)內(nèi)部使用的變量,其作用范圍并不局限于某一程序,而是任何程序均可隨時調(diào)用。
3、全局變量通常存儲一些SQLServer的配置設(shè)定值和效能統(tǒng)計數(shù)據(jù)。用戶可在程序中用全局變量來測試系統(tǒng)的設(shè)定值或Transact-SQL命令執(zhí)行后的狀態(tài)值。全局變量不是由用戶的程序定義的,它們是在服務(wù)器級定義的,只能使用預(yù)先說明及定義的全局變量。引用全局變量時必須以“@@”開頭。局部變量的名稱不能與全局變量的名稱相同,否則會在應(yīng)用中出錯。53.注釋符在Transact-SQL中可使用兩類注釋符:1.ANSI標(biāo)準(zhǔn)的注釋符“--”用于單行注釋。2.與C語言相同的程序注釋符號,即“/*……*/”,/*用于注釋文字的開頭,*/用于注釋文字的結(jié)尾,可在程序中標(biāo)識
4、多行文字為注釋。62.流程控制命令Transact-SQL語言使用的流程控制命令主要有以下幾種控制命令。2.1BEGIN…END其語法如下:BEGIN<命令行或程序塊塊>ENDBEGIN…END用來設(shè)定一個程序塊,將在BEGIN…END內(nèi)的所有程序視為一個單元執(zhí)行。BEGIN…END經(jīng)常在條件語句(如IF…ELSE)中使用。在BEGIN…END中可嵌套另外的BEGIN…END來定義另一程序塊。72.2IF…ELSE其語法如下:IF<條件表達(dá)式式><命令行或程序塊塊>[ELSE[條件表達(dá)式式]<命令行或程序塊塊>]其中:<條件表達(dá)式>可以是各種表達(dá)式的
5、組合,但表達(dá)式的值必須是邏輯值“真”或“假”。ELSE子句是可選的,最簡單的IF語句沒有ELSE子句部分。IF…ELSE用來判斷當(dāng)某一條件成立時執(zhí)行某段程序,條件不成立時執(zhí)行另一段程序。如果不使用程序塊,IF或ELSE只能執(zhí)行一條命令。IFELSE可以進(jìn)行嵌套,在Transact-SQL中最多可嵌套32級。8【例】從SC數(shù)據(jù)表中求出學(xué)號為S1同學(xué)的平均成績,如果此平均成績大于或等于60分,則輸出“pass”信息。if(selectavg(score)fromscwheresno='S1'groupbysno)>=60beginprint'pass'e
6、nd92.3CASECASE命令有兩種語句格式:格式1:CASE<運算式>WHEN<運算式>THEN<運算式>…WHEN<運算式>THEN<運算式>[ELSE<運算式>]END該語句的執(zhí)行過程是:將CASE后面表達(dá)式的值與各WHEN子句中的表達(dá)式的值進(jìn)行比較,如果二者相等,則返回THEN后的表達(dá)式的值,然后跳出CASE語句,否則返回ELSE子句中的表達(dá)式的值。ELSE子句是可選項。當(dāng)CASE語句中不包含ELSE子句時,如果所有比較失敗時,CASE語句將返回NULL。10【例】從學(xué)生表S中,選取SNO,SEX,如果SEX為“男”則輸出“M”,如果為“女
7、”輸出“F”。SELECTSNO,SEX=CASEsexWHEN'男'THEN'M'WHEN'女'THEN'F'ENDFROMS11格式2:CASEWHEN<條件表達(dá)式>THEN<運算式>…WHEN<條件表達(dá)式>THEN<運算式>[ELSE<運算式>]END該語句的執(zhí)行過程是:首先測試WHEN后的表達(dá)式的值如果其值為真,則返回THEN后面的表達(dá)式的值,否則測試下一個WHEN子句中的表達(dá)式的值如果所有WHEN子句后的表達(dá)式的值都為假,則返回ELSE后的表達(dá)式的值如果在CASE語句中沒有ELSE子句,則CASE表達(dá)式返回NULL。注:CASE命令可以嵌套
8、到SQL命令中。12【例】從SC表中查詢所有同學(xué)選課成績情況,凡成績?yōu)榭照咻敵觥拔纯肌?、小?0分輸出“不及