第07章:存儲過程、事務(wù)、視圖、索引_第1頁
第07章:存儲過程、事務(wù)、視圖、索引_第2頁
第07章:存儲過程、事務(wù)、視圖、索引_第3頁
第07章:存儲過程、事務(wù)、視圖、索引_第4頁
第07章:存儲過程、事務(wù)、視圖、索引_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章存儲過程、事務(wù)、視圖、索引本章內(nèi)容1索引2視圖3事物3存儲過程講解時間:15分鐘實踐時間:30分鐘索引:內(nèi)容預(yù)覽理論索引實踐練習(xí)創(chuàng)建索引索引SQLServer數(shù)據(jù)訪問方法表掃描法:從表的起始處逐行查找,直至找到符合查詢條件的記錄為止。索引法:系統(tǒng)會通過遍歷索引結(jié)構(gòu)來查找行的存儲位置,相比表掃描法,效率大為提高。索引的作用增強數(shù)據(jù)記錄的唯一性??梢源蟠蠹涌鞌?shù)據(jù)檢索的速度。加速表與表之間的連接,這在實現(xiàn)數(shù)據(jù)參照完整性方面有特殊的意義。使用ORDERBY和GROUPBY子句進行檢索數(shù)據(jù)時,可以顯著減少在查詢中排序和分組所占用的時間。索引索引使用的代價維護索引,在對數(shù)據(jù)進行插入、更新和刪除操作時會消耗系統(tǒng)時間。在建立索引時,由于需要復(fù)制數(shù)據(jù),也會消耗系統(tǒng)的時間和空間。可在以下場合創(chuàng)立索引主鍵、外鍵。需要在指定范圍快速或頻繁查詢的列。需要排序的列。在聚合函數(shù)中使用的列。索引的使用場合以存儲結(jié)構(gòu)區(qū)別,有“聚集索引〞〔ClusteredIndex,也稱聚類索引、簇集索引〕和“非聚集索引〞〔NonClusteredIndex,也稱非聚類索引、非簇集索引〕。以數(shù)據(jù)的唯一性區(qū)別,有“唯一索引〞〔UniqueIndex〕和“非唯一索引〞〔NonUniqueIndex〕。以索引列的個數(shù)區(qū)分,那么有“單列索引〞與“多列索引〞。索引分類索引聚集索引非聚集索引索引唯一索引非唯一索引索引單列索引多列索引聚集索引特點:將數(shù)據(jù)行的值在表內(nèi)排序,并存儲對應(yīng)的數(shù)據(jù)記錄,使數(shù)據(jù)表物理順序與索引順序相一致。當以某字段作為關(guān)鍵字建立聚集索引時,表中數(shù)據(jù)以該字段作為排序依據(jù)。一個表僅能建立一個聚集索引,但該索引可以包含多個列〔組合索引〕主鍵默認為聚集索引。聚集索引非聚集索引特點:完全獨立于數(shù)據(jù)行的結(jié)構(gòu)。非聚集索引中的數(shù)據(jù)排列順序并非表中數(shù)據(jù)的排列順序。一個表可以擁有多個非聚集索引,每個非聚集索引提供訪問數(shù)據(jù)的不同排序順序。在默認情況下,SQLServer所建立的索引是非聚集索引。非聚集索引聚集索引VS非聚集索引

插入數(shù)據(jù)速度查詢數(shù)據(jù)速度索引的數(shù)量所需空間聚集索引慢快一表一個少非聚集索引快慢一表可以多個多系統(tǒng)自動創(chuàng)立索引系統(tǒng)在創(chuàng)立表中的其他對象時,可以附帶創(chuàng)立新索引。通常情況下,在創(chuàng)立UNIQUE約束或PRIMARYKEY約束時,SQLServer會自動為這些約束列創(chuàng)立聚集索引。用戶創(chuàng)立索引使用SQLServerManagementStudio的對象資源管理器。利用T-SQL語句CREATEINDEX。創(chuàng)立索引現(xiàn)使用對象資源管理器在商品表的“團購價〞字段上建立非聚集索引使用SSMS創(chuàng)立索引使用SSMS創(chuàng)立索引使用SSMS創(chuàng)立索引使用SSMS創(chuàng)立索引CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]

INDEXindex_name

ONtable_name(column_name…)使用T-SQL創(chuàng)立索引在商品表的“商品編號〞和“標題〞字段上建立非聚集索引CREATENONCLUSTEREDINDEXidx_Product_productID_titleONProduct(productID,title)練習(xí)穩(wěn)固上述語法客戶在預(yù)訂線路時,經(jīng)常需要根據(jù)線路名進行查詢,并按價格排序顯示。如何使用索引技術(shù)提高檢索。通常在主外鍵、頻繁查詢的列、排序列和聚合函數(shù)列的字段上建立索引。依據(jù)需求,可在線路表的線路名和價格上建立索引。系統(tǒng)需要經(jīng)常獲取每個客戶預(yù)訂線路的數(shù)量,如何使用索引技術(shù)提升查詢效率?實踐練習(xí)實踐時間:30分鐘講解時間:20分鐘實踐時間:40分鐘視圖:內(nèi)容預(yù)覽理論視圖實踐練習(xí)使用視圖視圖(View)是一種數(shù)據(jù)庫對象,是一個從一張表、多張表或視圖中導(dǎo)出的虛表。視圖的結(jié)構(gòu)和數(shù)據(jù)是對數(shù)據(jù)表進行查詢的結(jié)果。視圖僅存放視圖的定義,不存放視圖所對應(yīng)的數(shù)據(jù)。視圖如果基表中的數(shù)據(jù)發(fā)生變化,那么從視圖中查詢出的數(shù)據(jù)也隨之改變。視圖的特點:關(guān)注點聚焦簡化操作定制數(shù)據(jù)合并分割數(shù)據(jù)提供平安機制視圖使用SSMS管理平臺,創(chuàng)立團購價高于400元的商品信息視圖,用于查看商品類型名、商品標題和團購價。視圖創(chuàng)立完成后,點擊“保存〞并命名為“v_Product_Category〞。通常約定視圖名以“v〞作為前綴,并用下劃線連接基表名。SELECT*FROMv_Product_Category。使用SQLServer平臺創(chuàng)立視圖使用SQLServer平臺創(chuàng)立視圖使用SQLServer平臺創(chuàng)立視圖使用SQLServer平臺創(chuàng)立視圖創(chuàng)立視圖的語法CREATEVIEW[schema_name.]view_name

[(column[,...n])]

ASSELECT_statement使用T-SQL語句創(chuàng)立視圖使用T-SQL語句創(chuàng)立團購價高于400元的商品信息視圖,用于查看商品類型名、商品標題、團購價、地區(qū)名和商店名。使用T-SQL平臺創(chuàng)立視圖CREATEVIEWv_Product_Category_Area_Shop

ASSELECTp.title商品標題,c.categoryName類型,p.currentPrice團購價,a.areaName地區(qū),s.shopName商店

FROMProductp,Categoryc,Areaa,ShopsWHEREp.categoryID=c.categoryIDANDp.areaID=a.areaIDANDp.shopID=s.shopIDANDp.currentPrice>400視圖中的列不僅可以是基表的數(shù)據(jù)列,還可以是計算列或聚合函數(shù)列。例:創(chuàng)立一個視圖,用于生成每個訂單的金額,并利用該視圖更新訂單表中相應(yīng)訂單的金額創(chuàng)立復(fù)雜查詢視圖生成每個訂單的金額,需聯(lián)接訂單表、訂單詳細表和商品表,并根據(jù)訂單分組、匯總每個訂購明細的金額。在子查詢中使用視圖用于更新訂單表金額。CREATEVIEWv_OrdersAmount

ASSELECTod.ordersID,SUM(p.currentPrice*od.quantity)calAmountFROMOrderso,OrdersDetailod,ProductpWHEREo.ordersID=od.ordersIDANDductID=ductIDGROUPBYod.ordersIDUPDATEOrdersSETamount=A.calAmountFROM(SELECTordersID,calAmountFROMv_OrdersAmount)AWHEREOrders.ordersID=A.ordersID創(chuàng)立復(fù)雜查詢視圖練習(xí)穩(wěn)固上述語法創(chuàng)立一個視圖,用于獲取所有線路的預(yù)訂次數(shù)。線路表Line提供了線路根本信息,訂單線路表OL_Detail提供了線路預(yù)訂情況。使用這兩張表創(chuàng)立一個視圖,獲取所有線路的預(yù)訂次數(shù)。創(chuàng)立一個視圖,用于獲取所有顧客的線路預(yù)訂信息。為獲取每個客戶預(yù)訂線路的詳細信息,需聯(lián)接客戶表Customer、訂單客戶表OC_Detail、訂單線路表OL_Detail和線路表Line。使用這四張表創(chuàng)立一個視圖,即可查詢所有客戶的預(yù)訂信息。創(chuàng)立一個視圖,用于獲取每一種線路類型的預(yù)訂次數(shù)。創(chuàng)立一個視圖,用于獲取所有預(yù)訂“國內(nèi)短線游〞客戶的根本信息。實踐練習(xí)實踐時間:40分鐘講解時間:20分鐘實踐時間:40分鐘事物:內(nèi)容預(yù)覽理論事務(wù)實踐練習(xí)使用事務(wù)為什么需要事物事務(wù)是一個由用戶所定義的完整的工作單元,一個事務(wù)內(nèi)的所有語句作為一個整體來執(zhí)行,即或者全部執(zhí)行,或者全部不執(zhí)行。當遇到錯誤時,可以回滾事務(wù),取消事務(wù)內(nèi)所做的所有改變,從而保證數(shù)據(jù)庫中數(shù)據(jù)的一致性和可恢復(fù)性。轉(zhuǎn)賬交易過程中的轉(zhuǎn)出和轉(zhuǎn)入可設(shè)計為一個數(shù)據(jù)庫事務(wù)。什么是事物原子性〔atomic、atomicity):事務(wù)必須是一個原子工作單元。對于其數(shù)據(jù)修改,或者全都執(zhí)行,或者全都不執(zhí)行。一致性〔consistent、consistency):事務(wù)在完成時,必須使所有的數(shù)據(jù)都保持一致的狀態(tài),即事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)轉(zhuǎn)換為另一個一致性狀態(tài)。隔離性〔isolation):由并發(fā)事務(wù)所作的修改必須與任何其他并發(fā)事務(wù)所作的修改隔離。持久性〔duration、durability〕:事務(wù)完成后,其對于系統(tǒng)的影響是永久性的。事務(wù)的特性顯式事務(wù):顯式地定義事務(wù)的開始和事務(wù)的結(jié)束。BEGINTRANSACTION:標識一個事務(wù)的開始,即啟動事務(wù)。COMMITTRANSACTION:提交事務(wù)。標識一個事務(wù)的結(jié)束,事務(wù)內(nèi)所修改的數(shù)據(jù)被永久保存到數(shù)據(jù)庫中。ROLLBACKTRANSACTION:回滾事務(wù),即事務(wù)內(nèi)所修改的數(shù)據(jù)被回滾到事務(wù)執(zhí)行前的狀態(tài)。顯式事務(wù)隱式事務(wù)在當前事務(wù)提交或回滾后,SQLServer自動開始下一個事務(wù)。隱式事務(wù)不需要使用BEGINTRANSACTION語句啟動事務(wù),僅需要用戶使用COMMITTRANSACTION或ROLLBACKTRANSACTION語句提交或回滾事務(wù)。在提交或回滾后,SQLServer自動開始下一個事務(wù)。執(zhí)行SETIMPLICIT_TRANSACTIONSON語句可使SQLServer進入隱式事務(wù)模式。隱式事物自動提交事務(wù)將每個T-SQL語句都視為一個事務(wù),如果成功執(zhí)行,那么自動提交;如果出現(xiàn)錯誤,那么自動回滾。它是SQLServer默認的事務(wù)模式。自動提交事務(wù)在數(shù)據(jù)庫實際開發(fā)過程中,顯式事務(wù)用到得最多。因為自動提交事務(wù)無法將多條語句作為一個獨立的邏輯單元來處理,而隱式事務(wù)無法明確控制事務(wù)的開始位置。例如:客戶“雷亞波〞在美淘網(wǎng)購置了兩份“寶島牛排〞和一雙“花花公子登山鞋〞,請使用事務(wù)技術(shù)維護相應(yīng)的數(shù)據(jù)表以反映該購置業(yè)務(wù)。事務(wù)的使用客戶購置商品,除在訂單表〔Orders〕上生成一條記錄外,還應(yīng)在訂單明細表〔OrdersDetail〕上生成兩條記錄。因而需要在上述這兩張表上分別進行“INSERT〞操作。兩個操作是一個業(yè)務(wù)整體,僅允許全部成功,如果其中有一個失敗,那么撤銷所有的操作。使用數(shù)據(jù)庫事務(wù)可以很好地實現(xiàn)該業(yè)務(wù)。事務(wù)·參考代碼·(1)變量聲明DECLARE@ordersIDint,@productIDintDECLARE@customerIDint=999DECLARE@ordersTimevarchar(10)='2023-01-01'DECLARE@deliveryTimevarchar(10)='2023-01-03'事務(wù)·參考代碼·(2)主體代碼BEGINTRANSACTION--啟動事務(wù)INSERTINTOOrders(customerID,ordersDate,deliveryDate)--添加訂單表記錄VALUES(@customerID,CONVERT(date,@ordersTime),CONVERT(date,@deliveryTime))IF@@ERROR=0--添加訂單表記錄成功BEGINSELECT@ordersID=MAX(ordersID)FROMOrders--獲取新增訂單的訂單編號SELECT@productID=productIDFROMProductWHEREtitle='寶島牛排'INSERTINTOOrdersDetail(ordersID,productID,quantity)VALUES(@ordersID,@productID,2)--添加2份“寶島牛排〞到訂單明細表SELECT@productID=productIDFROMProductWHEREtitle='花花公子登山鞋'INSERTINTOOrdersDetail(ordersID,productID,quantity)VALUES(@ordersID,@productID,1)--添加1雙“花花公子登山鞋〞到訂單明細表IF@@ERROR=0--添加訂單表和訂單明細表記錄成功BEGINPRINT‘添加訂單明細成功'COMMITTRANSACTION--提交事務(wù)ENDELSEBEGINPRINT'添加訂單明細失敗'ROLLBACKTRANSACTION--回滾事務(wù)ENDENDELSEBEGINPRINT'添加訂單失敗'ROLLBACKTRANSACTION--回滾事務(wù)END練習(xí)穩(wěn)固上述語法在不違背外鍵約束的前提下刪除“出境游〞線路類型信息。線路類型表LineType與線路表Line是一對主從表,線路類型表是主表,線路表是從表,兩者之間存在外鍵約束。為刪除“出境游〞線路類型信息,只能先將線路表中類型為“出境游〞的類型編號賦值為NULL,然后再刪除線路類型表的“出境游〞記錄。這兩個操作是一個整體,或者全部成功,或者全部撤銷。可使用數(shù)據(jù)庫事務(wù)技術(shù)實現(xiàn)該業(yè)務(wù)。實踐練習(xí)實踐時間:30分鐘講解時間:15分鐘實踐時間:30分鐘存儲過程:內(nèi)容預(yù)覽理論存儲過程介紹系統(tǒng)存儲過程實踐練習(xí)使用系統(tǒng)存儲過程SQLServer中的T-SQL語言為了實現(xiàn)特定的任務(wù),而將一些需要屢次調(diào)用的固定操作編寫為子程序,并集中以一個存儲單元的形式存儲在效勞器上,由SQLServer數(shù)據(jù)庫效勞器通過子程序名來調(diào)用,這些子程序即存儲過程。存儲過程是一種數(shù)據(jù)庫對象,存儲于數(shù)據(jù)庫內(nèi),可由應(yīng)用程序通過一個調(diào)用執(zhí)行,具有較強的編程功能。存儲過程可以使用EXECUTE語句來運行。存儲過程的概念存儲在SQLServer客戶機中的T-SQL的工作機制客戶機上的大量T-SQL語句需逐條向SQLServer發(fā)送,將降低系統(tǒng)運行效率。許多批處理代碼被重復(fù)使用屢次,每次都輸入相同的代碼。存儲在SQLServer效勞器中的存儲過程的工作機制將固定邏輯的操作以T-SQL批處理塊的形式存儲在數(shù)據(jù)庫效勞器上,并取名,該名稱即為存儲過程名。僅需調(diào)用存儲過程名,即可執(zhí)行該存儲過程。存儲過程的優(yōu)點加快系統(tǒng)運行速度。存儲過程僅在創(chuàng)立時進行編譯,以后每次執(zhí)行存儲過程均無須再重新編譯。封裝復(fù)雜操作。當對數(shù)據(jù)庫進行復(fù)雜操作時〔如對多個表進行更新、刪除時〕,可用存儲過程將此復(fù)雜操作進行封裝。實現(xiàn)模塊化程序設(shè)計和代碼重用。存儲過程一旦創(chuàng)立,以后即可在程序中任意調(diào)用屢次。增強平安性,參數(shù)化存儲過程有助于保護應(yīng)用程序不受SQL的注入式攻擊。減少網(wǎng)絡(luò)流量。存儲過程的特點存儲過程VS函數(shù)存儲過程分類系統(tǒng)存儲過程自定義存儲過程存儲過程函數(shù)EXEC單獨執(zhí)行隨處調(diào)用可以改數(shù)據(jù)(限制少)不能改數(shù)據(jù)有輸出參數(shù)(多個)有返回值(一個)效率更高(有爭議)效率較高SQLServer提供系統(tǒng)存儲過程,它們是一組預(yù)編譯的T-SQL語句。系統(tǒng)存儲過程主要用于從系統(tǒng)表中獲取信息,為系統(tǒng)管理員管理SQLServer提供幫助,為用戶查看數(shù)據(jù)庫對象提供便利。所有系統(tǒng)存儲過程均以“sp_〞開始,系統(tǒng)存儲過程均存放于系統(tǒng)數(shù)據(jù)庫master中。系統(tǒng)管理員擁有這些存儲過程的使用權(quán)限,在任何數(shù)據(jù)庫中均可運行系統(tǒng)存儲過程,執(zhí)行結(jié)果反映的是當前數(shù)據(jù)庫的信息。系統(tǒng)存儲過程系統(tǒng)存儲過程系統(tǒng)存儲名稱說

明sp_helpdb報告有關(guān)指定數(shù)據(jù)庫或所有數(shù)據(jù)庫的信息【EXECsp_helpdb】sp_renamedb更改數(shù)據(jù)庫的名稱,如:【sp_renamedb'Meitao',‘Taobao‘】用于將數(shù)據(jù)庫Meitao更名為Taobaosp_tables返回當前環(huán)境下可查詢的對象列表【EXECsp_tables】【sp_tablesRank】sp_columns查看某個表的所有列信息,如:【sp_columnsEmployee】用于查看表Employee所有列的信息sp_help查看某個表的所有信息【sp_help】【sp_helpRank】sp_helpconstraint查看某個表的約束【sp_helpconstraintRank】sp_helpindex查看某個表的索引【sp_helpindexRank】練習(xí)使用系統(tǒng)存儲過程實踐練習(xí)實踐時間:30分鐘講解時間:30分鐘實踐時間:60分鐘存儲過程:內(nèi)容預(yù)覽理論自定義存儲過程實踐練習(xí)使用自定義存儲過程用戶自定義存儲過程是指用戶根據(jù)自身需要,為完成某一特定功能,在用戶數(shù)據(jù)庫中創(chuàng)立的存儲過程。CREATEPROC[EDURE]proc_name[{@parameter_namedata_type}=[默認值]][OUTPUT],…,n]AS procedure_body存儲過程關(guān)鍵字PROCDURE可以簡稱為PROC。proc_name為存儲過程名稱?!癅parameter_namedata_type〞為參數(shù)列表,其中,@parameter_name為參數(shù)名,data_type為參數(shù)類型。每個參數(shù)均可指定默認值,“n〞表示可以有多個參數(shù)。參數(shù)默認為INPUT類型,即輸入類型;參數(shù)之后的“OUTPUT〞說明該參數(shù)為輸出類型。AS之后的procedure_body為存儲過程的主體,是存儲過程的核心。自定義存儲過程創(chuàng)立一個名為proc_Product_Info的存儲過程,其將獲取所有商品的標題、類型名、團購價、地區(qū)名和商店名,按照類型和團購價升序顯示。IFEXISTS(SELECT*FROMsysobjectsWHEREname='proc_Product_Info') DROPPROCEDUREproc_Product_InfoGOCREATEPROCEDUREproc_Product_InfoASSELECTtitle,categoryName,currentPrice,areaName,shopNameFROMProductp,Categoryc,Areaa,ShopsWHEREp.categoryID=c.categoryIDANDp.areaID=a.areaIDANDp.shopID=s.shopIDORDERBYcategoryName,currentPrice自定義存儲過程存儲過程proc_Product_Info創(chuàng)立成功后,可在SQLServerManagementStudio的對象資源管理器的數(shù)據(jù)庫“Meitao〞→“可編程性〞→“存儲過程〞下看到新創(chuàng)立的存儲過程。使用“EXECUTE|EXEC存儲過程名〞命令執(zhí)行存儲過程。EXECproc_Product_Info自定義存儲過程創(chuàng)立一個名為proc_ProductStatistics的存儲過程,其將獲取不同類型的商品個數(shù)和平均團購價。自定義存儲過程CREATEPROCEDUREproc_ProductStatisticsASSELECTcategoryName商品類型名,COUNT(ductID)商品數(shù)量,AVG(currentPrice)平均團購價FROMProductp,CategorycWHEREp.categoryID=c.categoryIDGROUPBYcategoryName--根據(jù)categoryName分組ORDERBY平均團購價存儲過程的參數(shù)個數(shù)可以是多個,且與參數(shù)的順序無關(guān)。參數(shù)定義為:“參數(shù)名數(shù)據(jù)類型〞。存儲過程中的參數(shù)分為輸入類型和輸出類型,默認為輸入類型。自定義存儲過程創(chuàng)立一個名為proc_ProdStatisGivenCategory的存儲過程,其將獲取指定類型的商品個數(shù)和平均團購價。自定義存儲過程所謂“指定類型〞,即商品類型不是固定的,而是由用戶或系統(tǒng)指定。定義一個帶輸入?yún)?shù)的存儲過程,該參數(shù)用于接收外界輸入的需要進行統(tǒng)計的商品類型名稱。自定義存儲過程CREATEPROCEDUREproc_ProdStatisGivenCategory(

--輸入?yún)?shù),用于接收商品類型名稱

@categoryNamenvarchar(20))ASSELECTcategoryName商品類型名,COUNT(ductID)

商品數(shù)量,AVG(currentPrice)

平均團購價FROMProductp,CategorycWHEREp.categoryID=c.categoryIDANDcategoryName=@categoryName--輸入的@categoryName賦給Category表的categoryName列GROUPBYcategoryName--根據(jù)categoryName分組ORDERBY平均團購價執(zhí)行帶參數(shù)的存儲過程,需要將實際參數(shù)值賦給存儲過程中的參數(shù)。EXECproc_ProdStatisGivenCategory‘數(shù)碼電器’自定義存儲過程執(zhí)行存儲過程proc_ProdStatisGivenCategory,傳入“數(shù)碼電器〞,將獲取數(shù)碼電器類商品的統(tǒng)計信息。注意:傳入值的類型、個數(shù)和順序都需要與存儲過程中定義的參數(shù)逐一對應(yīng)。創(chuàng)立一個名為proc_MaxPriceGivenCategory的存儲過程,其將獲取指定商品類型的最高團購價,要求輸出指定商品類型的最高團購價及其商品名。自定義存儲過程存儲過程中需定義三個參數(shù),一個為輸入?yún)?shù),用于接收商品類型信息〔此題為類型名〕;另兩個為輸出參數(shù),其中一個用于輸出指定類型商品的最高團購價,另一個用于輸出具有最高團購價的商品名。自定義存儲過程CREATEPROCEDUREproc_MaxPriceGivenCategory(

@categoryNamenvarchar(20),--輸入?yún)?shù),用于接收商品類型名 @maxPricemoneyOUTPUT,--輸出參數(shù),用于輸出指定類型商品的最高團購價 @productNamenvarchar(20)OUTPUT--輸出參數(shù),用于輸出具有指定類型最高團購價的商品名)AS--獲取@categoryName商品類型的最高團購價,賦給輸出參數(shù)@maxPriceSELECT@maxPrice=MAX(currentPrice)FROMProductp,CategorycWHEREp.categoryID=c.categoryIDANDcategoryName=@categoryName--獲取最高團購價的商品標題,賦給輸出參數(shù)@productNameSELECT@productName=titleFROMProductWHEREcurrentPrice=@maxPrice執(zhí)行帶輸出參數(shù)的存儲過程,需要在批處理塊中定義輸出參數(shù),且在將實際參數(shù)傳給存儲過程的輸出參數(shù)時,需要在實際參數(shù)之后添加關(guān)鍵字“OUTPUT〞,才可在成功執(zhí)行存儲過程后,通過實際參數(shù)變量得到存儲過程傳出的參數(shù)值。自定義存儲過程DECLARE@categoryNamenvarchar(20)DECLARE@maxPricemoney--定義最高團購價變量DECLARE@productNamenvarchar(20)--定義商品名變量SET@categoryName='服裝'--賦值商品類型EXECproc_MaxPriceGivenCategory@categoryName,@maxPriceOUTPUT,@productNameOUTPUTPRINT'團購價最貴的'+@categoryName+'類商品是:'+@productName+',價格是:'+CONVERT(nvarchar(20),@maxPri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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

提交評論