SQL Server 存儲(chǔ)過(guò)程嵌套示例
表名稱prd_wxt_enterprise_tbl_EnterpriseInfo數(shù)據(jù)來(lái)源存儲(chǔ)數(shù)據(jù)企業(yè)信息表主鍵/外鍵字段名稱說(shuō)明類型(精度范圍)備注cEnterpriseIdn 企業(yè)IDChar(10)sEnterpriseNamen 企業(yè)名稱Varchar(200)sShortNamen 簡(jiǎn)稱Varchar(50)sAddressn 地址nVarchar(200)E_systemn 企業(yè)所屬系統(tǒng)(0新系統(tǒng),空或1為舊系統(tǒng))Char(1)
產(chǎn)品表表名稱Shop_tbl_ProductInfo數(shù)據(jù)來(lái)源存儲(chǔ)數(shù)據(jù)產(chǎn)品表主鍵/外鍵字段名稱說(shuō)明類型(精度范圍)備注P_Code(PK)n 產(chǎn)品SKU號(hào),即下單號(hào),產(chǎn)品系統(tǒng)編號(hào)(p123456789)Char(10)not nullEnterpriseIdn 企業(yè)IDChar(10)not nullP_Namen 產(chǎn)品名稱Nvarchar(100)not nullP_Pricen 產(chǎn)品價(jià)格(單位元)MoneyP_UserPricen 產(chǎn)品會(huì)員價(jià)(單位元)MoneyRemarkn 備注Nvarchar(500)
2);;;;;要實(shí)現(xiàn)的功能:刪除舊企業(yè)數(shù)據(jù)及相關(guān)的產(chǎn)品,要求用嵌套存儲(chǔ)過(guò)程實(shí)現(xiàn)3);;;;;存儲(chǔ)過(guò)程:包括兩個(gè)存儲(chǔ)過(guò)程a) 存儲(chǔ)過(guò)程一:根據(jù)企業(yè)ID,刪除該企業(yè)及下面的產(chǎn)品:存儲(chǔ)過(guò)程代碼如下:/*功能:刪除企業(yè),同時(shí)刪除關(guān)聯(lián)的表,包括企業(yè)表及其關(guān)聯(lián)的產(chǎn)品表數(shù)據(jù)創(chuàng)建人: 創(chuàng)建日期:2007-4-10修改日期:2007-4-10*/CREATE PROCEDURE [DeleteEnterprise] (@EnterpriseID nvarchar(10))ASdeclare @strSQL nvarchar(4000)--刪除企業(yè)產(chǎn)品表select @strSQL = 'delete from Shop_tbl_ProductInfo where EnterpriseId=''+@EnterpriseID+''';exec(@strSQL)--刪除企業(yè)表select @strSQL = 'delete from prd_wxt_enterprise_tbl_EnterpriseInfo where cEnterpriseID=''+@EnterpriseID+''';exec(@strSQL)GOb);;;;;存儲(chǔ)過(guò)程二:選出舊企業(yè)的數(shù)據(jù),然后通過(guò)循環(huán)嵌套的方式,通過(guò)循環(huán)語(yǔ)句調(diào)用存儲(chǔ)過(guò)程一,刪除所有的舊企業(yè)數(shù)據(jù)及其產(chǎn)品數(shù)據(jù)存儲(chǔ)過(guò)程代碼如下:/*功能:刪除舊企業(yè)數(shù)據(jù),同時(shí)刪除關(guān)聯(lián)的表,包括創(chuàng)建人:創(chuàng)建日期:2007-4-11修改日期:2007-4-11*/CREATE PROCEDURE [DeleteOldEnterprise] ASdeclare @strSQL nvarchar(4000)declare @EnterpriseID nvarchar(10)DECLARE Enterprise_CURSOR Cursor FORSelect cEnterpriseId from prd_wxt_enterprise_tbl_EnterpriseInfo where e_system='1' or e_system is nullOPEN Enterprise_CURSORFetch next from Enterprise_CURSORinto @EnterpriseID--以下一直到END都是循環(huán)語(yǔ)句WHILE @@FETCH_STATUS = 0BEGIN--下面這行是調(diào)用存儲(chǔ)過(guò)程一刪除企業(yè)及其產(chǎn)品數(shù)據(jù)exec DeleteEnterprise @EnterpriseIDFetch next from Enterprise_CURSORinto @EnterpriseIDENDCLOSE Enterprise_CURSORDEALLOCATE Enterprise_CURSORGO