第7章2TSQL程序設(shè)計(jì)基礎(chǔ)_第1頁
第7章2TSQL程序設(shè)計(jì)基礎(chǔ)_第2頁
第7章2TSQL程序設(shè)計(jì)基礎(chǔ)_第3頁
第7章2TSQL程序設(shè)計(jì)基礎(chǔ)_第4頁
第7章2TSQL程序設(shè)計(jì)基礎(chǔ)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章T-SQL程序設(shè)計(jì)基礎(chǔ)案例--乘車卡消費(fèi)問題你的乘車卡上有50.3元人民幣,當(dāng)余額低于5元時(shí),顯示友好提示信息“金額低于5元,請(qǐng)盡快充值!”,當(dāng)余額低于0.9元時(shí),顯示友情提示“余額不足,請(qǐng)投幣!”。該案例中包含了變量及計(jì)算等問題,那么如何實(shí)現(xiàn)呢?DECLARE@iINT,@jeDECIMAL(5,1)SET@i=0SET@je=50.3WHILE(@je>=0.9)BEGINSET@je=@je-0.9SET@i=@i+1IF(@je<5)PRINT'金額低于5元,請(qǐng)?jiān)手?'ENDSELECT@jeAS余額,@iAS消費(fèi)次數(shù),@i*0.9AS消費(fèi)額PRINT'金額不足,請(qǐng)投幣!'本節(jié)教學(xué)重點(diǎn)及要求掌握流程控制語句(包括:BEGIN…END,IF…ELSE,WHILE…BREAK…CONTINUE,WAITFOR,CASE等)。掌握游標(biāo)的概念和聲明方法,以及使用游標(biāo)進(jìn)行數(shù)據(jù)的查詢、修改、刪除等操作。能夠根據(jù)實(shí)際需要,進(jìn)行綜合運(yùn)用編寫程序代碼。7.4T-SQL流程控制語句流程控制語句是指那些用來控制程序執(zhí)行和流程分支的命令。在SQLServer2005中,流程控制語句主要用來控制SQL語句、語句塊或者存儲(chǔ)過程的執(zhí)行流程。注釋符:語句塊:begin…end條件語句:if…else、ifexists循環(huán)語句:while、break、continue等待語句:waitfor返回語句:return轉(zhuǎn)移語句:goto(了解)1.注釋符

注釋語句:程序中不被執(zhí)行的正文,它有二個(gè)作用:說明代碼的含義,增強(qiáng)代碼的可讀性;可以把程序中暫時(shí)不用的語句注釋掉,使它們暫時(shí)不被執(zhí)行,等需要這些語句時(shí)再將它們恢復(fù)。有兩種方法來聲明注釋:--(兩個(gè)減號(hào)):用于注釋單行。從此開始的整行或者行的一部分就成為了注釋,注釋在行的末尾結(jié)束。/*……*/:可以注釋大塊跨越多行的代碼,它必須用一對(duì)分隔符“/**/”將余下的其他代碼分隔開。補(bǔ)例1單行注釋--Thisisacomment.Wholelinewillbeignored.SELECTemployee_name,address--查詢所有姓錢的員工FROMemployeeWHEREemployee_nameLIKE'錢%'補(bǔ)例2多行注釋/*Thisisacommnet.Alltheselineswillbeignored.*//*Listallemployees.*/SELECT*FROMemployee注釋并沒有長度限制。SQLServer文檔禁止嵌套多行注釋,但單行注釋可以嵌套在多行注釋中。/*--Listallemployees.SELECT*FROMemployee*/2.BEGIN…END語句語法形式:BEGIN{sql_statement|statement_block}END作用可以將多條T-SQL語句封裝起來,構(gòu)成一個(gè)獨(dú)立的語句塊。Begin和end必須成對(duì)出現(xiàn)。10控制語句順序執(zhí)行程序控制語句順序執(zhí)行流程改變程序3.IF…ELSE語句語法形式:IFBoolean_expression/*條件表達(dá)式*/{sql_statement/state_block}/*條件表達(dá)式為TRUE時(shí)執(zhí)行*/ELSE/*條件表達(dá)式為FALSE時(shí)執(zhí)行*/{sql_statement/state_block}作用:按條件控制程序的執(zhí)行。當(dāng)條件滿足時(shí),則在執(zhí)行條件之后的T-SQL語句。否則,就執(zhí)行else后的T-SQL語句(若ELSE部分存在)3.IF…ELSE語句【例7-6】根據(jù)course_score表的成績(jī)狀況來判斷:如果1210024課程的平均成績(jī)大于90分,顯示“1210024課程成績(jī)優(yōu)秀”;若大于80分,顯示“1210024課程成績(jī)良好”;否則顯示“1210024課程及格”。DECLARE@vagintSELECT@vag=AVG(score)FROMcourse_scoreWHEREcourse_score.cour_id='1210024'PRINT'1210024課程平均成績(jī)?yōu)?PRINT@vagIF@vag>90PRINT'1210024課程成績(jī)優(yōu)秀'ELSEIF@vag>80PRINT'1210024課程成績(jī)良好'ELSEPRINT'1210024課程成績(jī)及格'補(bǔ)例3:求兩個(gè)整數(shù)的最大數(shù)。DECLARE@maxINT,@aINT,@bINTSELECT@a=32,@b=56IF(@a>@b)SELECT@max=@aELSESELECT@max=@bSELECT@maxAS最大數(shù)4.CASE函數(shù)作用:可以計(jì)算多個(gè)條件式,并將其中一個(gè)符合條件的結(jié)果表達(dá)式返回。分類:按照使用形式的不同,可以分為簡(jiǎn)單CASE函數(shù)和搜索CASE函數(shù)。(1)簡(jiǎn)單CASE函數(shù)將某個(gè)表達(dá)式與一組簡(jiǎn)單表達(dá)式進(jìn)行比較以確定結(jié)果。其語法形式為:CASEinput_expression

WHENwhen_expressionTHENresult_expression

[...n]

[ELSEelse_result_expression]ENDUSEjxglGOSELECTCASEcour_nameWHEN'大學(xué)語文'THEN'中文系教師講授'WHEN'馬克思主義基本原理'THEN'政治歷史系教師講授'WHEN'中國近現(xiàn)代史綱要'THEN'政治歷史系教師講授'WHEN'大學(xué)英語'THEN'外國語系教師講授'WHEN'線性代數(shù)'THEN'數(shù)學(xué)系教師講授'ELSE'本系教師講授'ENDAS'開課教師',cour_nameFROMcoursesGO【例7-7】根據(jù)cour_name列,判斷course表的各個(gè)課程由哪系的老師講授。(2)CASE搜索函數(shù),CASE計(jì)算一組邏輯表達(dá)式以確定結(jié)果。語法:CASEWHENBoolean_expressionTHENresult_expression[...n][ELSEelse_result_expression]END注意事項(xiàng):(1)按指定順序?qū)γ總€(gè)WHEN子句的邏輯表達(dá)式進(jìn)行計(jì)算。返回第一個(gè)計(jì)算結(jié)果為TRUE的

result_expression。(2)如果邏輯表達(dá)式計(jì)算結(jié)果不為TRUE,則在指定ELSE子句的情況下數(shù)據(jù)庫引擎將返回else_result_expression;若沒有指定ELSE子句,則返回NULL值。USEjxglGOSELECTcour_nameCASEWHENsemesterIN(1,2)THEN'一年級(jí)開設(shè)'WHENsemesterIN(3,4)THEN'二年級(jí)開設(shè)'WHENsemesterIN(5,6)THEN'三年級(jí)開設(shè)'ELSE'四年級(jí)開設(shè)'ENDAS'開課學(xué)期'FROMcourses【例7-8】在courses表中根據(jù)semester列,判斷courses表的各個(gè)課程分別在幾年級(jí)開設(shè),使之更易理解。USEjxglGOUPDATEteachersSETteach_telephone=CASEWHENdept_id='D001'THEN'3785947'WHENdept_id='D001'THEN'3785940'WHENdept_id='D002'THEN'3785938'WHENdept_id='D004'THEN'3785926'ELSE'3786946'ENDGO【例7-9】在UPDATE語句中使用CASE函數(shù):根據(jù)所在的系確定teachers表的電話號(hào)碼。5.WHILE…CONTINUE…BREAK循環(huán)控制語句

語法形式為:WHILEBoolean_expression

{sql_statement|statement_block}

[BREAK]

{sql_statement|statement_block}

[CONTINUE]作用:

用于設(shè)置重復(fù)執(zhí)行SQL語句或語句塊的條件。條件為真,就重復(fù)執(zhí)行語句。

說明:

Break用于退出最內(nèi)層的while循環(huán)。

Continue用于重新開始一次while循環(huán)。USEjxglGOWHILE(SELECTmin(year(getdate())-year(stu_birth))FROMstudents)<20BEGINIF(SELECTcount(*)FROMstudents)<20BREAKELSEBEGINDELETEstudentsWHEREstu_birth>=all(SELECTstu_birthFROMstudents)ENDEND【例7-10】查詢students表,只要有年齡小于20歲的學(xué)生,就將年齡最小的那個(gè)學(xué)生刪掉,如此循環(huán)下去,直到所有的學(xué)生的年齡都不小于20歲,或是學(xué)生的總?cè)藬?shù)小于20就退出循環(huán)。DECLARE@sint,@nint,@tint,@cintSET@S=0SET@n=1WHILE@n<=10BEGINSET@c=1SET@t=1WHILE@c<=@nBEGINSET@t=@t*@cSET@c=@c+1ENDSET@s=@s+@tSET@n=@n+1ENDSELECT@sas'10階乘之和',@nas'n'補(bǔ)例

計(jì)算s=1!+2!+…+10!。6.GOTO語句GOTO語句可以使程序直接跳到指定的標(biāo)有標(biāo)識(shí)符的位置處繼續(xù)執(zhí)行。標(biāo)識(shí)符可以為數(shù)字與字符的組合,但必須以“:”結(jié)尾。語法格式是:GOTOlabel;DECLARE@sumint,@countintSELECT@sum=0,@count=1label_1:SELECT@sum=@sum+@countSELECT@count=@count+1IF@count<=100GOTOlabel_1SELECT@count,@sum操作結(jié)果如下面所示:

1015050(1行受影響)【例7-10】利用GOTO語句求出從1加到100的總和。7.調(diào)度執(zhí)行語句WAITFORWAITFOR語句用于暫時(shí)停止執(zhí)行SQL語句、語句塊或者存儲(chǔ)過程等,直到所設(shè)定的時(shí)間已過或者所設(shè)定的時(shí)間已到才繼續(xù)執(zhí)行。語法形式為:WAITFOR{DELAY'time'|TIME'time'}(1)DELAY:指示SQLServer一直等到指定的時(shí)間過去,最長可達(dá)24小時(shí)。(2)‘time’:要等待的時(shí)間。可以按datetime數(shù)據(jù)可接受的格式指定time,也可以用局部變量指定此參數(shù),但不能指定日期。(3)TIME:指示SQLServer等待到指定時(shí)間?!纠?-12】用WAITFOR語句設(shè)置延遲操作。waitfordelay'00:00:05'print'延遲5秒執(zhí)行!'--5秒后執(zhí)行print【例7-13】用WAITFOR語句指定從何時(shí)起執(zhí)行。

waitfortime'08:57'print'08:57執(zhí)行'--到08:57的時(shí)候才會(huì)執(zhí)行print8.RETURN語句語法格式:RETURN[integer_expression]作用:無條件地從過程、批或語句塊中退出,在return之后的其他語句不會(huì)被執(zhí)行。說明:Return可以在過程、批和語句塊中的任何位置使用。Return與break很相似,不同的是return可以返回一個(gè)整數(shù)。如果沒有指定返回值,SQL

Server系統(tǒng)會(huì)根據(jù)程序執(zhí)行的結(jié)果返回一個(gè)內(nèi)定值,返回值含義如下所示:返回值

含義返回值

含義0程序執(zhí)行成功-7資源錯(cuò)誤-1找不到對(duì)象-8非致使的內(nèi)部錯(cuò)誤-2數(shù)據(jù)類型錯(cuò)誤-9已經(jīng)達(dá)到系統(tǒng)的權(quán)限-3死鎖-10、-11致使的內(nèi)部不一致錯(cuò)誤-4違反權(quán)限原則-12表或指針破壞-5語法錯(cuò)誤-13數(shù)據(jù)庫破壞-6用戶造成的一般錯(cuò)誤-14硬件錯(cuò)誤表7-4RETURN命令返回的內(nèi)定狀態(tài)值28介紹SQL批處理批處理單個(gè)SQL

命令組成一批作為單個(gè)

執(zhí)行計(jì)劃

進(jìn)行編譯輸出結(jié)果9.批處理一個(gè)批處理是—條或多條Transact-SQL語句的集合。SQLServer服務(wù)器對(duì)批處理的處理分為四個(gè)階段:分析階段,檢查語法,驗(yàn)證合法性;優(yōu)化階段,確定最有效的方法;編譯階段,生成執(zhí)行計(jì)劃;運(yùn)行階段,執(zhí)行語句。批處理最重要的特征就是它作為一個(gè)不可分的實(shí)體在服務(wù)器上解釋和執(zhí)行。SQLServer有以下幾種指定批處理的方法。應(yīng)用程序。存儲(chǔ)過程或觸發(fā)器。由EXECUTE語句執(zhí)行的字符串是一個(gè)批處理,并編譯為一個(gè)執(zhí)行計(jì)劃。例如,EXEC('SELECT*FROMteachers')由sp_executesql系統(tǒng)存儲(chǔ)過程執(zhí)行的字符串是一個(gè)批處理,并編譯為一個(gè)執(zhí)行計(jì)劃。例如,executesp_executesqlN'SELECT*fromjxgl.dbo.teachers'(1)

批處理的指定GO是批處理的結(jié)束標(biāo)志。把GO前面的所有語句當(dāng)成一個(gè)批處理來執(zhí)行。GO命令和T-SQL語句不可處在同一行上。在批處理的第一條語句后執(zhí)行任何存儲(chǔ)過程必須包含EXECUTE關(guān)鍵字。局部(用戶定義)變量的作用域限制在一個(gè)批處理中,不可在GO命令后引用。RETURN可在任何時(shí)候從批處理中退出,而不執(zhí)行位于RETURN之后的語句。(2)批處理的結(jié)束與退出USEjxglGO

--批處理結(jié)束標(biāo)志CREATEVIEWstudents_infoASSELECT*FROMstudentsGO--CREATEVIEW語句與其他語句隔離SELECT*FROMstudents_infoGO補(bǔ)例

創(chuàng)建一個(gè)視圖,使用GO命令將CREATEVIEW語句與批處理中的其他語句(如USE、SELECT語句等)隔離。去掉go?declare@iintselect@i=1while@i<500beginif@i%3=0or@i%7=0print@iset@i=@i+1end課堂練習(xí)1:計(jì)算500以內(nèi)能被3或7整除的數(shù)。本節(jié)小結(jié)流程控制語句概述begin…end語句if…else、ifexists語句while、break和continue語句waitfor語句return語句習(xí)題4、57.6游標(biāo)游標(biāo)(Cursor)是一種處理數(shù)據(jù)的方法,為了查看或者處理結(jié)果集中的數(shù)據(jù),游標(biāo)提供了在結(jié)果集中向前或者向后瀏覽數(shù)據(jù)的能力。可以把游標(biāo)看成一種指針,可以指向結(jié)果集中的任意位置,它允許用戶對(duì)指定位置的數(shù)據(jù)進(jìn)行處理,可以把結(jié)果集中的數(shù)據(jù)放在數(shù)組、應(yīng)用程序中或其它地方。游標(biāo)把作為面向集合的數(shù)據(jù)庫管理系統(tǒng)和面向行的程序設(shè)計(jì)兩者聯(lián)系起來,才使兩個(gè)數(shù)據(jù)處理方式能夠進(jìn)行溝通。7.6.1游標(biāo)概述根據(jù)游標(biāo)的用途不同,SQLServer2005將游標(biāo)分成三種類型:1.Transact_SQL游標(biāo).主要用在服務(wù)器上,不支持提取數(shù)據(jù)塊或多行數(shù)據(jù)。2.API游標(biāo):支持在OLEDB,ODBC以及DB_library中使用游標(biāo)函數(shù),主要用在服務(wù)器上。3.客戶游標(biāo):當(dāng)在客戶機(jī)上緩存結(jié)果集時(shí)才使用。常常僅被用作服務(wù)器游標(biāo)的輔助。API游標(biāo)和Transact-SQL游標(biāo)被稱為服務(wù)器游標(biāo),也被稱為后臺(tái)游標(biāo),而客戶端游標(biāo)被稱為前臺(tái)游標(biāo)。在本節(jié)中我們主要講述服務(wù)器(后臺(tái))游標(biāo)。7.6.1游標(biāo)概述根據(jù)Transact_SQL服務(wù)器游標(biāo)的處理特性,SQLServer2005將游標(biāo)分為4種:2.動(dòng)態(tài)游標(biāo):與靜態(tài)游標(biāo)相對(duì)。當(dāng)滾動(dòng)游標(biāo)時(shí),動(dòng)態(tài)游標(biāo)反映結(jié)果集中所做的所有更改。1.靜態(tài)游標(biāo):在打開游標(biāo)時(shí)在tempdb中建立SELECT結(jié)果集的快照??偸前凑沾蜷_游標(biāo)時(shí)的原樣顯示結(jié)果集,并不反應(yīng)它在數(shù)據(jù)庫中對(duì)任何結(jié)果集成員所做的更新。3.只進(jìn)游標(biāo):不支持滾動(dòng),它只支持游標(biāo)從頭到尾順序提取數(shù)據(jù),游標(biāo)從數(shù)據(jù)庫中提取一條記錄并進(jìn)行操作,操作完畢后,再提取下一條記錄。4.鍵集游標(biāo):該游標(biāo)中各行的成員身份和順序是固定的。由一組唯一標(biāo)識(shí)符(鍵)控制,這組鍵稱為鍵集。鍵集是打開游標(biāo)時(shí)來自符合SELECT語句要求的所有行中的一組鍵值。鍵集驅(qū)動(dòng)的游標(biāo)對(duì)應(yīng)的鍵集是打開該游標(biāo)時(shí)在數(shù)據(jù)庫tempdb中生成的。7.6.2游標(biāo)的定義與使用使用游標(biāo)(CURSOR)的步驟如下。聲明游標(biāo)。在使用游標(biāo)之前,首先需要聲明游標(biāo)。打開游標(biāo)。打開一個(gè)游標(biāo)意味著在游標(biāo)中輸入了相關(guān)的記錄信息。獲取記錄信息。首先將游標(biāo)當(dāng)前指向的記錄保存到一個(gè)局部變量中,然后游標(biāo)將自動(dòng)移向下一條記錄。將一條記錄讀入某個(gè)局部變量后,就可以根據(jù)需要對(duì)其進(jìn)行處理了。關(guān)閉游標(biāo)。釋放游標(biāo)鎖定的記錄集。釋放游標(biāo)。釋放游標(biāo)自身所占用的資源。1.聲明游標(biāo)(DECLARE):在內(nèi)存中創(chuàng)建游標(biāo)結(jié)構(gòu),是游標(biāo)語句的核心。

語法格式:Declarecursor_name/*指定游標(biāo)名*/[insensitive][scroll]cursor/*指定游標(biāo)類型,insensitive表示靜態(tài)游標(biāo)*/FORSELECT_statement/*指定查詢語句*/[for{readonly|update[ofcolumn_name[,…n]]}]表7-10Declare命令中SCROLL的取值SCROLL選項(xiàng)含義FIRST提取游標(biāo)中的第一行數(shù)據(jù)LAST提取游標(biāo)中的最后一行數(shù)據(jù)PRIOR提取游標(biāo)當(dāng)前位置的上一行數(shù)據(jù)NEXT提取游標(biāo)當(dāng)前位置的下一行數(shù)據(jù)RELATIVEn提取游標(biāo)當(dāng)前位置之前或之后的第n行數(shù)據(jù)(n正,往下,n負(fù),往上)ABSULUTEn提取游標(biāo)中的第n行數(shù)據(jù)【例7-32】定義游標(biāo)Teach_CUR,以便查詢教師名字和所講授的課程名,學(xué)分。

DECLARETeach_CURCURSORFORSELECTteachers.teach_name,courses.cour_name,courses.creditFROMteachers,courses,course_arrangeWHEREteachers.teach_Id=course_arrange.teach_idandcourse_arrange.cour_Id=courses.cour_Id2.打開游標(biāo)(OPEN),產(chǎn)生游標(biāo)定義的結(jié)果集。語句格式:OPEN{{[GLOBAL]cursor_name}|@cursor_variable_name}其中:GLOBAL選項(xiàng)指定cursor_name為全局游標(biāo);cursor_name為游標(biāo)名稱;@cursor_variable_name為游標(biāo)變量名稱,該變量引用一個(gè)游標(biāo)。注意:①當(dāng)游標(biāo)打開成功時(shí),游標(biāo)位置指向結(jié)果集的第一行之前。②只能打開已經(jīng)聲明但尚未打開的游標(biāo)?!纠?-33】打開前面所創(chuàng)建的游標(biāo)Teach_CUR。OPENTeach_CUR【例7-34】顯示游標(biāo)結(jié)果集合中數(shù)據(jù)行數(shù)

SELECT數(shù)據(jù)行數(shù)=@@CURSOR_ROWS3.讀取游標(biāo)一旦游標(biāo)被成功打開,就可以從游標(biāo)中逐行地讀取數(shù)據(jù),以進(jìn)行相關(guān)處理。從游標(biāo)中讀取數(shù)據(jù)主要使用FETCH命令。其語法格式為:FETCH[[NEXT|PRIOR|FIRST|LAST|ABSOLUTE{n|@nvar}|RELATIVE{n|@nvar}]FROM]{{[GLOBAL]cursor_name}|cursor_variable_name}[INTO@variable_name[,...n]]表9-14@@fetch_status變量返回值描述0FETCH命令已成功執(zhí)行-1FETCH命令失敗或者行數(shù)據(jù)己超出了結(jié)果集-2所讀取的數(shù)據(jù)已經(jīng)不存在。注意:游標(biāo)位置決定了結(jié)果集中哪一行的數(shù)據(jù)可以被提取,如果游標(biāo)方式為FORUPDATE,則可決定哪一行數(shù)據(jù)庫可以更新或者刪除。@@FETCH_STATUS變量報(bào)告上一個(gè)FETCH語句的狀態(tài),其取值和含義如下:OPENTeach_CURFETCHNEXTFROMTeach_CUR

/*取第一個(gè)數(shù)據(jù)行*/WHILE@@fetch_status=0/*檢查@@fetch_status是否還有數(shù)據(jù)可取*/BEGINFETCHNEXTFROMTeach_CUREND【例7-35】打開前面所創(chuàng)建的游標(biāo)Teach_CUR,讀取游標(biāo)中的數(shù)據(jù)。4.關(guān)閉游標(biāo)(CLOSE)

格式為:CLOSE游標(biāo)名

例如:關(guān)閉Teach_CUR游標(biāo)如下描述:

CLOSETeach_CUR關(guān)閉已打開的游標(biāo),之后不能對(duì)游標(biāo)進(jìn)行讀取等操作,但可以使用OPEN語句再次打開該游標(biāo)。5.刪除游標(biāo)(DEALLOCATE)。DEALLOCATE語句格式:DEALLOCATE游標(biāo)名作用:DEALLOCATE命令刪除游標(biāo)與游標(biāo)名或游標(biāo)變量之間的聯(lián)系,并且釋放游標(biāo)占用的所有系統(tǒng)資源。刪除后不可再用,必須重新聲明方可。例如,刪除Teach_CUR游標(biāo),DEALLOCATETeach_CUR6.利用游標(biāo)修改數(shù)據(jù)。通過游標(biāo)修改或刪除游標(biāo)基表中的當(dāng)前數(shù)據(jù)行。UPDATE語句的格式為:UPDATEtable_nameSET列名=表達(dá)式}[,…n]WHERECURRENTOFcursor_nameDELETE語句的格式為:DELETEFROMtable_nameWHERECURRENTOFcursor_name說明:CURRENTOFcursor_name:表示當(dāng)前游標(biāo)指針?biāo)傅漠?dāng)前行數(shù)據(jù)。CURRENTOF只能在UPDATE和DELETE語句中使用。注意:使用游標(biāo)修改基表數(shù)據(jù)的前提是聲明的游標(biāo)是可更新的。對(duì)相應(yīng)的數(shù)據(jù)庫對(duì)象(游標(biāo)的基表)有修改和刪除權(quán)限?!纠?-39】通過游標(biāo)將教師表teachers記錄號(hào)為3的“呂加國”老師的職稱由“講師’改為“副教授”。USEjxglGODECLARETEACH_CURSOR2SCROLLCURSORFORSELECTteach_name,teach_professionalFROMteachersFORUPDATEOFteach_professionalOPENTEACH_CURSOR2FETCHABSOLUTE3FROMTEACH_CURSOR2UPDATEteachersSETteach_professional='副教授'WHERECURRENTOFTEACH_CURSOR2SELECTteach_name,teach_professionalFROMteacherswhereteach_name='呂加國'CLOSETEACH_CURSOR2DEALLOCATETEACH_CURSOR27.6.3使用存儲(chǔ)過程管理游標(biāo)可以使用Sp_cursor_list系統(tǒng)存儲(chǔ)過程來獲得對(duì)當(dāng)前連接可見的游標(biāo)列表,使用Sp_describe_cursor、Sp_describe_cursor_columns和Sp_describe_cursor_tables來確定游標(biāo)的特性。1.Sp_describe_cursor:返回描述游標(biāo)屬性(例如游標(biāo)的作用域、名稱、類型、狀態(tài)和行數(shù))的游標(biāo)。

2.Sp_describe_cursor_columns:返回描述游標(biāo)中每一列的屬性(例如列的名稱、位置、大小和數(shù)據(jù)類型)的游標(biāo)。3.Sp_describe_cursor_tables:報(bào)告游標(biāo)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論