第9章 SQL Server程序設(shè)計_第1頁
第9章 SQL Server程序設(shè)計_第2頁
第9章 SQL Server程序設(shè)計_第3頁
第9章 SQL Server程序設(shè)計_第4頁
第9章 SQL Server程序設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第九章SQL程序設(shè)計程序中的批、腳本、注釋程序中的事務

SQLServer變量

程序中的流程控制第九章SQL程序設(shè)計

程序中的批處理、腳本、注釋

當要完成的任務不能由單獨的Transact-SQL語句來完成時,SQLServer使用批處理、腳本、存儲過程、觸發(fā)器等來組織多條Transact-SQL語句。

1、批處理

批處理就是一個或多個Transact-SQL語句的集合,從應用程序—次性發(fā)送到SQLServer并由SQLServer編譯成—個可執(zhí)行單元,此單元稱為執(zhí)行計劃。執(zhí)行計劃中的語句每次執(zhí)行一條。建立批處理時,使用GO語句作為批處理的結(jié)束標記。在一個GO語句行中不能包括其他Transact-SQL語句,但可以使用注釋文字。當編譯器讀取到GO語句時,它會把GO語句前面所有的語句當作一個批處理,并將這些語句打包發(fā)送給服務器。GO語句本身并不是Transact-SQL語句的組成部分,它只是一個用于表示批處理結(jié)束的前端指令。如果在一個批處理中包含任何語法錯誤,如:引用了一個并不存在的對象,則整個批處理就不能被成功地編譯和執(zhí)行。如果一個批處理中某句有執(zhí)行錯誤,如違反了約束,它僅影響該語句的執(zhí)行,并不影響批處理中其他語句的執(zhí)行。

第九章SQL程序設(shè)計

程序中的批處理、腳本、注釋建立批處理時,應當注意以下幾點:1、CREATEDEFAULT,CREATEPROCEDURE,CREATERULE,CREATETRIGGER及CREATEVIEW語句不能與其他語句放在一個批處理中。

2、不能在刪除一個對象之后,在同一批處理中再次引用這個對象。

3、不能在一個批處理中引用其他批處理中所定義的變量。

4、不能把規(guī)則和默認值綁定到表字段或用戶自定義數(shù)據(jù)類型之后,立即在同—個批處理中使用它們。

5、不能定義一個CHECK約束之后,立即在同一個批處理中使用該約束。

6、不能在修改表中的一個字段名之后,立即在同一個批處理中引用新字段名。

7、如果一個批處理中的第一個語句是執(zhí)行某個存儲過程的EXECUTE語句,則EXECUTE關(guān)鍵字可以省略;如果該語句不是第一個語句,則必須使用EXECUTE關(guān)鍵字,或者省寫為“EXEC”。第九章SQL程序設(shè)計

程序中的批處理、腳本、注釋2、腳本腳本是存儲在文件中的一系列SQL語句,即一系列按順序提交的批處理。Transact-SQL腳本中可以包含一個或多個批處理。GO語句是批處理結(jié)束的標志。如果沒有GO語句,則將它作為單個批處理執(zhí)行。使用腳本可以將創(chuàng)建和維護數(shù)據(jù)庫時的操作步驟保存為一個磁盤文件。將Transact-SQL語句保存為腳本文件,不僅可以建立起可再用的模塊化代碼,還可以在不同計算機之間傳送Transact-SQL語句,使兩臺計算機執(zhí)行同樣的操作。腳本可以在查詢分析器中執(zhí)行,也可以在isql或osql實用程序中執(zhí)行。查詢分析器是建立、編輯和使用腳本的一個最好的環(huán)境。在查詢分析器中,不僅可以新建、保存、打開腳本文件,而且可以輸入和修改Transact-SQL語句,還可以通過執(zhí)行Transact-SQL語句來查看腳本的運行結(jié)果,從而檢驗腳本內(nèi)容的正確性。第九章SQL程序設(shè)計

程序中的批處理、腳本、注釋3、注釋注釋是指程序中用來說明程序內(nèi)容的語句,它不能執(zhí)行且不參與程序的編譯。注釋用于語句代碼的說明,或暫時禁用的部分語句。為程序加上注釋不僅能增強程序的可讀性,而且有助于日后的管理和維護。

1)行內(nèi)注釋。如果整行都是注釋而并非所要執(zhí)行的程序行,則該行可用行內(nèi)注釋,語法為:--注釋語句:這種注釋形式用來標志一行注釋,可以與要執(zhí)行的代碼處在同一行,也可以另起一行。從雙連字符(--)開始到行尾均為注釋。2)塊注釋如果要給程序所加的注釋內(nèi)容較長,則可使用塊注釋,語法為:/*注釋語句*/:這種注釋形式用來標志多行注釋,可以與要執(zhí)行的代碼處在同一行,也可以另起一行,甚至可以放在可執(zhí)行代碼內(nèi)。對于多行注釋,必須使用開始注釋字符對(/*)開始注釋,使用結(jié)束注釋字符對(*/)結(jié)束注釋,*/和*/之間的全部內(nèi)容都是注釋部分。注意多行注釋不能跨越批處理,整個注釋必須包含在一個批處理中。第九章SQL程序設(shè)計

程序中的事務事務是最小的工作單元。這個工作單元要么成功完成所有操作,要么就是失敗,并將所做的一切復原。

1、概述事務可以用于確保數(shù)據(jù)能夠正確地被修改,避免造成數(shù)據(jù)只修改一部分而導致數(shù)據(jù)不完整,或是在修改途中受到其他用戶的干擾。事務有4個特性。:

原子性(Atomic)事務是原子的,要么完成整個操作,要么退出所有操作。如果任何語句失敗,則所有作為事務一部分的語句都不會運行。一致性(ConDemoltent)在事務完成或失敗時,要求數(shù)據(jù)庫處于一致狀態(tài)。由事務引發(fā)的從一種狀態(tài)到另一種狀態(tài)的變化是一致的。獨立性(Isolated)事務是獨立的。它不與數(shù)據(jù)庫的其他事務交互或沖突。持久性(Durable)稱事務是持久的,是因為在事務完成后它無須考慮和數(shù)據(jù)庫發(fā)生的任何事情。如果系統(tǒng)掉電且數(shù)據(jù)庫服務器崩潰,事務保證在服務器重啟后仍是完整的。第九章SQL程序設(shè)計

程序中的事務的類型1)顯式事務顯示事務是手工配置的事務。用保留字標識顯式事務的開始和結(jié)束。保留字包括BEGINTRANSACTION、COMMITTRANSACTION、ROLLBACKTRANSACTION和SAVETRANSACTION,其中TRANSACTION可以簡寫為TRAN。要開始顯式事務,首先輸入關(guān)鍵詞BEGINTRAN。要結(jié)束顯示事務,使用COMMITTRAN。如果要取消事務,使用ROLLBACKTRAN命令,ROLLBACKTRAN將完全取消事務,或?qū)⑹聞栈謴偷匠跏紶顟B(tài)。可以使用SAVETRAN命令生成存儲點,然后有選擇性地恢復到那些點。事務內(nèi)部存儲點的數(shù)目沒有明確的約束,而且可以在一個事務中出現(xiàn)重復的存儲點名字。然而,只有最后那個存儲點名字會被用于復原到指定點。

第九章SQL程序設(shè)計

程序中的事務的類型2)隱式事務有時候看起來沒有使用事務,但它們可能隱藏在幕后,這種事務叫做隱式事務。要使用這種模式,必須使用SetImplicit_TransactionsOn語句來設(shè)置連接。SQLServer的任何數(shù)據(jù)修改語句,都是隱式事務。下列的任何一條語句都可以作為一個隱式事務的開始:ALTERTABLE、CREATE、DELETE、DROP、FETCH、GRANT、INSERT、OPEN、REVOKE、SELECT、TRUNCATETABLE、UPDATE。要結(jié)束隱式事務,必須使用COMMITTRANSACTION或ROLLBACKTRANSACTION語句。之后,任何指令的命令都將會開始另一個事務。第九章SQL程序設(shè)計

程序中的事務的工作機制例:BEGINTRANINSERTINTO課程(課程號,課程名,備注)VALUES('0001','大學語文','')UPDATE教學計劃

SET啟始周=2WHERE專業(yè)代碼='0101'DELETE教師

WHERE姓名

ISNULLCOMMITTRAN1)當BEGINTRAN語句到達數(shù)據(jù)庫時,SQLServer分析出這是顯式事務的開始,

SQLServer找到下一個可用的內(nèi)存日志頁面,并給新事務分配一個事務ID。2)接著運行INSERT語句,新的行被記錄到事務日志中,數(shù)據(jù)頁面在內(nèi)存中進行修改,如果所需頁面不在內(nèi)存中,則從磁盤調(diào)出。3)下一個語句以相似方式運行。UPDATE語句記錄在事務日志中,數(shù)據(jù)頁在內(nèi)存中進行了修改。4)當SQLServer收到COMMITTRAN時,日志頁面被寫到數(shù)據(jù)庫的日志設(shè)備上,這樣才能保證日志可以被恢復。由于日志變化寫入了硬盤,它保證事務是可恢復的,即使掉電了或在數(shù)據(jù)頁寫入磁盤時數(shù)據(jù)庫崩潰了,也能進行事務恢復。第九章SQL程序設(shè)計

程序中的檢查點的處理SQLServer中有二類檢查點:自動檢查點和手工檢查點。自動檢查點是基于SQLServer計算的??稍赗ECOVERYINTERVAL配置選項中規(guī)定檢查點處理的頻率。該選項指出以分鐘為單位的用來恢復系統(tǒng)中數(shù)據(jù)庫的最大時間間隔。如果SQLServer認為恢復數(shù)據(jù)庫要大量時間,它將發(fā)出自動檢查點。這時,所有修改過的內(nèi)存中的數(shù)據(jù)頁面將寫入磁盤(包括日志頁面),自動檢查點每60秒檢查一次,并在各數(shù)據(jù)庫之間循環(huán),以決定該數(shù)據(jù)庫是否需要賦予檢查點。注意,對帶有“trunc.logonChkpt.”選項設(shè)置的數(shù)據(jù)庫,該過程將從日志中截斷已提交的事務。手工檢查點可在任何時候輸入Transact-SQL命令CHECKPOINT來強制執(zhí)行。注意,只有SA或數(shù)據(jù)庫的DBA才能執(zhí)行該命令。發(fā)出手工檢查點指令后,內(nèi)存中所有修改過的頁面記入磁盤,就象自動檢查點處理時所發(fā)生的情況一樣。注意,手工檢查點對事務日志無效(即不將它寫入磁盤),不考慮是否設(shè)置了“trunk.logonChkpt.”數(shù)據(jù)庫選項。第九章SQL程序設(shè)計鎖鎖用來提供數(shù)據(jù)庫的并發(fā)性控制。如果沒有鎖,SQLServer就沒有防止多個用戶同時更新同一數(shù)據(jù)的機制。一個鎖就是在多用戶環(huán)境中對某一種正在使用中的資源的一個限制,它阻止其他用戶訪問或修改資源中的數(shù)據(jù)。SQLServer為了保證用戶操作的一致性,自動對資源設(shè)置和釋放鎖。例如,當用戶正在更新一個表時,沒有任何其他用戶能修改甚至查看已經(jīng)更新過的記錄。當所有的與該用戶相關(guān)的更新操作都完成后,鎖便會釋放,并且記錄變成可訪問的。通常,SQLServer中有三類鎖:共享鎖:也稱為讀鎖,是加在正在讀取的數(shù)據(jù)上的。共享鎖防止別的用戶在加鎖的情況下修改該數(shù)據(jù),共享鎖和別的共享鎖是相容的。更新鎖:和獨占鎖很相似,更新鎖防止別人在改變數(shù)據(jù)的過程中修改數(shù)據(jù)。獨占鎖:當要改變數(shù)據(jù)時使用獨占鎖。它防止別的用戶讀取或修改正在工作的數(shù)據(jù)。直到將鎖釋放為止,獨占鎖不與別的鎖兼容。第九章SQL程序設(shè)計編寫有效的事務在實際程序設(shè)計和管理過程中,應盡可能使事務保持簡短,以減少并發(fā)連接間的資源鎖定爭奪。在有少量用戶的系統(tǒng)中,運行時間長、效率低的事務可能不會成為問題,但是在擁有成千上萬用戶的大型數(shù)據(jù)庫系統(tǒng)中,這樣的事務將導致無法預知的后果。設(shè)計時,需要遵循以下原則:不要在事務處理期間要求用戶輸入。在事務啟動之前,獲得所有需要的用戶輸入。在瀏覽數(shù)據(jù)時,盡量不要打開事務。在所有預備的數(shù)據(jù)分析完成之前,不應啟動事務。保持事務盡可能簡短。在知道了必須要進行的修改之后,啟動事務,執(zhí)行修改語句,然后立即提交或回滾。只有在需要時,才打開事務。靈活使用更低的事務隔離級別。靈活地使用更低的游標并發(fā)選項。在事務中盡量使訪問的數(shù)據(jù)量最小。盡量減少鎖定的行數(shù),從而減少事務之間的爭奪。小心地管理隱性事務,以便避免并發(fā)問題。第九章SQL程序設(shè)計

程序中的變量變量是SQLServer用來在語句之間傳遞數(shù)據(jù)的方式之一。SQLServer中的變量分為兩種,即全局變量和局部變量,其中,全局變量的名稱以兩個@@字符開始,由系統(tǒng)定義和維護;局部變量的名稱以一個@字符開始,由用戶自己定義和賦值。全局變量是SQLServer系統(tǒng)提供并賦值的變量。用戶不能建立全局變量,也不能修改全局變量。在SQLServer2000中,全局變量是—組特殊的函數(shù),它們的名稱是以@@開始,而且不需要任何參數(shù),在調(diào)用時無需在函數(shù)名后面加上—對圓括號,這些函數(shù)也稱為無參函數(shù)。第九章SQL程序設(shè)計

程序中的變量局部變量是指在批處理或腳本中用來保存數(shù)據(jù)值的對象。局部變量常用于作為計數(shù)器計算循環(huán)執(zhí)行的次數(shù)或控制循環(huán)執(zhí)行的次數(shù),也可以用于保存由存儲過程代碼返回的數(shù)據(jù)值,此外,還可以使用Table數(shù)據(jù)類型的局部變量來代替臨時表。1、聲明局部變量使用一個局部變量之前,必須使用DECLARE語句來聲明這個局部變量,給它指定一個變量名和數(shù)據(jù)類型,對于數(shù)值變量,還需要指定其精度和小數(shù)位數(shù)。DECLARE語句的語法格式為:DECLARE@局部變量

數(shù)據(jù)類型[,…n]局部變量名總是以@符號開始,變量名最多可以包含128個字符,局部變量名必須符合標識符命名規(guī)則,局部變量的數(shù)據(jù)類型可以是系統(tǒng)數(shù)據(jù)類型,也可以是用戶自定義數(shù)據(jù)類型,但不能把局部變量指定為TEXT,NTEXT或IMAGE數(shù)據(jù)類型。在一個DECLARE語句中可以定義多個局部變量,只需用逗號(,)分隔即可。第九章SQL程序設(shè)計

程序中的變量2、紿局部變量賦值

使用DECLARE語句聲明一個局部變量之后,該變量的值將被初始化為NULL,若賦其他的值,可以使用SET語句,語法格式如下:

SET@局部變量=表達式[,…n]SET語句的功能是將表達式的值賦給局部變量,其中表達式是SQLServer的任何有效的表達式。

除了可以使用SET語句對局部變量賦值外,還可以使用SELECT語句對局部變量賦值,即通過在SELECT子句的選擇列表中引用一個局部變量而使它獲得一個值,語法格式如下:SELECT@局部變量=表達式[,…n]如果使用—個SELECT語句對一個局部變量賦值時,這個語句返回了多個值,則這個局部變量將取得該SELECT語句所返回的最后一個值。此外,使用SELECT語句時,如果省略賦值號(=)及其后面的表達式,則可以將局部變量的值顯示出來。第九章SQL程序設(shè)計

程序中的變量3、局部變量的作用域局部變量的作用域指可以引用該變量的范圍,局部變量的作用域從聲明它們的地方開始到聲明它們的批處理或存儲過程的結(jié)尾。也就是說,局部變量只能在聲明它的批處理、存儲過程或觸發(fā)器中使用,一旦這些批處理或存儲過程結(jié)束,局部變量將自動消除。例:聲明一個局部變量,把學生表中學號為“010101001001”的學生姓名賦給局部變量,并輸出。在查詢分析器里運行結(jié)果如圖11.4所示,代碼如下:DECLARE@NAMECHAR(12)--聲明局部變量SELECT@NAME=姓名

FROM學生

WHERE學號='010101001001'--將結(jié)果存儲PRINT'學生表中學號為“010101001001”的學生姓名為:'+@NAME--輸出字符串GO--該批處理結(jié)束,局部變量@NUM自動清除PRINT'如果繼續(xù)引用該變量,將會出現(xiàn)聲明局部變量的錯誤提示'GOPRINT'學生表中學號為010101001001的學生姓名為:'+@NAME--輸出字符串GO第九章SQL程序設(shè)計

程序中的流程控制

流程控制語句是用來控制程序執(zhí)行和流程分支的命令,這些命令包括條件控制語句,無條件轉(zhuǎn)移語句和循環(huán)語句。使用這些命令,可以使程序具有結(jié)構(gòu)性和邏輯性,并可完成較復雜的操作。

BEGINN…END語句塊

IF…ElSE語句

CASE表達式

WAITFOR語句

WHILE語句

PRINT語句第九章SQL程序設(shè)計

程序中的流程控制1、BEGINN…END語句塊在條件和循環(huán)等流程控制語句中,要執(zhí)行兩個或兩個以上的Transact-SQL語句時,就需要使用BEGIN…END語句,這些語句可以作為一個單元來執(zhí)行。也就是說BEGIN…END語句用于將多個Transact-SQL語句組合成一個語句塊,將它們視為一個整體來處理。

BEGIN…END語句的語法格式為:BEGIN語句I……ENDBEGIN…END語句通常用于下列情況:WHILE循環(huán)需要包含語句塊;CASE語句的元素需要包含語句塊;IF或ELSE子句需要包含語句塊。位于DEGIN和END之間的各個語句既可以是單個的Transact-SQL語句,也可以是使用BEGIN和END定義的語句塊,即BEGIN…END語句塊可以嵌套。第九章SQL程序設(shè)計

程序中的流程控制1、BEGINN…END語句塊例:使用BEGIN…END語句顯示系部代碼為“01”的班級代碼和班級名稱。代碼如下:USESTUDENTGOIFEXISTS(SELECT*FROM班級WHERE系部代碼='01')BEGINPRINT'滿足條件的班級:'SELECT班級代碼,班級名稱FROM班級WHERE系部代碼='01'ENDGO第九章SQL程序設(shè)計

程序中的流程控制2、IF…ElSE語句在程序中,經(jīng)常需要根據(jù)特定條件指示執(zhí)行不同的操作和運算,也就是進行流程控制。SQLServer利用IF…ELSE命令使程序有不同的條件分支,從而完成各種不同條件環(huán)境下的操作。

IF…ELSE語句的語法格式為:

IF布爾表達式語句1[ELSE

語句2]其中布爾表達式表示—個測試條件,其取值為TRUE或FALSE。語句1和語句2可以是單個的Transact-SQL語句,也可以是用語句BEGIN…END定義的語句塊。該語句的執(zhí)行過程是:如果IF后面的布爾表達式返回TRUE,則執(zhí)行語句1,否則執(zhí)行語句2。若無ELSE,如果測試條件成立,則執(zhí)行語句1,否則執(zhí)行IF語句后面的其他語句。第九章SQL程序設(shè)計

程序中的流程控制例:使用IF…ELSE語句實現(xiàn)以下功能:如果存在職稱為副教授或教授的教師,那么輸出這些教師的姓名、學歷、職務、職稱,否則輸出沒有滿足條件的教師。代碼如下:IFEXISTS(SELECT*FROM教師WHERE職稱='副教授'OR職稱='教授')BEGINSELECT姓名,學歷,職務,職稱FROM教師WHERE職稱='副教授'OR職稱='教授'PRINT'以上教師是具有高級職稱的'ENDELSEBEGINPRINT'沒有滿足條件的教師'ENDGO第九章SQL程序設(shè)計

程序中的流程控制3、CASE表達式CASE表達式是一個特殊的Transact-SQL表達式,它能夠?qū)崿F(xiàn)多重選擇的情況。CASE表達式不同于—個普通的Transact-SQL語句,它不能單獨執(zhí)行,而只能作為—個可以單獨執(zhí)行的語句的一部分來使用。

簡單CASE表達式CASE表達式搜索CASE表達式1)簡單CASE表達式簡單CASE表達式將一個測試表達式與一組簡單表達式進行比較,如果某個簡單表達式與測試表達式的值相等,則返回相應結(jié)果表達式的值。第九章SQL程序設(shè)計

程序中的流程控制簡單CASE表達式的語法格式為:CASE測試表達式WHEN測試值1THEN結(jié)果表達式1[WHEN測試值2THEN結(jié)果表達式2[…]][ELSE結(jié)果表達式n]END其中測試表達式用于做條件判斷,測試值用于與測試表達式作比較,測試表達式必須與測試值的數(shù)據(jù)類型相同。簡單CASE表達式必須以CASE開頭并以END結(jié)束,它能夠?qū)⒁粋€表達式和一系列的測試值進行比較,并返回符合條件的結(jié)果表達式。簡單CASE表達式的執(zhí)行過程是:用測試表達式的值依次與每一個WHEN子句的測試值作比較,直到找到第一個與測試表達式的值完全相同的測試值時,便將該WHEN子句指定的結(jié)果表達式返回。如果沒有任何一個WHEN子句的測試值和測試表達式相同,SQLServer將檢查是否有ELSE子句存在,如果存在ELSE子句,便將ELSE子句之后的結(jié)果表達式返回;如果不存在ELSE子句,便返問一個NULL值。注意:在一個簡單CASE表達式中,一次只能有一個WHEN子句指定的結(jié)果表達式返回。若同時有多個測試值與測試表達式的值相同,則只有第—個與測試表達式的值相同的WHEN子句指定的結(jié)果表達式返回。第九章SQL程序設(shè)計

程序中的流程控制簡單CASE表達式的執(zhí)行過程是:用測試表達式的值依次與每一個WHEN子句的測試值作比較,直到找到第一個與測試表達式的值完全相同的測試值時,便將該WHEN子句指定的結(jié)果表達式返回。如果沒有任何一個WHEN子句的測試值和測試表達式相同,SQLServer將檢查是否有ELSE子句存在,如果存在ELSE子句,便將ELSE子句之后的結(jié)果表達式返回;如果不存在ELSE子句,便返問一個NULL值。注意:在一個簡單CASE表達式中,一次只能有一個WHEN子句指定的結(jié)果表達式返回。若同時有多個測試值與測試表達式的值相同,則只有第—個與測試表達式的值相同的WHEN子句指定的結(jié)果表達式返回。第九章SQL程序設(shè)計

程序中的流程控制2)搜索CASE表達式CASE關(guān)鍵字后面不跟任何表達式,各個WHEN子句后都是布爾表達式。搜索CASE表達式的語法格式為:CASEWHEN布爾表達式1THEN結(jié)果表達式1WHEN布爾表達式2THEN結(jié)果表達式2[…n]][ELSE結(jié)果表達式n]END搜索CASE表達式的執(zhí)行過程是:測試每個WHEN子句后的布爾表達式,如果結(jié)果為TRUE,則返回相應的結(jié)果表達式,否則檢查是否有ELSE子句存在。如果存在ELSE子句,便將ELSE子句之后的結(jié)果表達式返回;如果不存在ELSE子句,便返回—個NULL值。注意:在一個搜索CASE表達式中,一次只能有一個WHEN子句指定的結(jié)果表達式返回,如果有多個布爾表達式為TRUE,則只返回第一個為TRUE的WHEN子句指定的結(jié)果表達式。第九章SQL程序設(shè)計

程序中的流程控制例:使用搜索CASE表達式實現(xiàn)以下功能:分別輸出班級代碼、班級名稱,并根據(jù)系部代碼判別年級。運行結(jié)果見圖11.8所示。USESTUDENTGOSELECT班級代碼,班級名稱,年級=CASEWHEN系部代碼='01'THEN'一年級'WHEN系部代碼='02'THEN'二年級'ENDFROM班級GO第九章SQL程序設(shè)計

程序中的流程控制4、WAITFOR語句WAITFOR語句可以暫停執(zhí)行程序—段時間之后再繼續(xù)執(zhí)行,也可以暫停執(zhí)行程序到所指定的時間后再繼續(xù)執(zhí)行。WAITFOR語句的語法格式為:WAITFORDELAY‘時間’|TIME‘時間’其中DELAY指定—段時間間隔過去之后執(zhí)行一個操作。TIME表示從某個時刻開始執(zhí)行一個操作。時間參數(shù)必須為可接受的DATETIME數(shù)據(jù)格式。在DATETIME數(shù)據(jù)中不允許有日期部分,即采用HH:MM:SS的格式。例:使用WAITFOR實現(xiàn)以下功能:輸出系部代碼為“01”的班級代碼、班級名稱、系部代碼之前等待二秒。代碼如下:WAITFORDELAY'00:00:02'SELECT班級代碼,班級名稱,系部代碼FROM班級WHERE系部代碼='01'GO第九章SQL程序設(shè)計

程序中的流程控制5、WHILE語句在程序中當需要多次重復處理某項工作時,就需使用WHILE循環(huán)語句。WHILE語

溫馨提示

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

評論

0/150

提交評論