文章詳情頁
SQL Server 存儲過程嵌套示例
瀏覽:2日期:2023-11-02 10:04:46
1) 事例數(shù)據(jù)庫表:企業(yè)信息表
表名稱prd_wxt_enterprise_tbl_EnterpriseInfo數(shù)據(jù)來源存儲數(shù)據(jù)企業(yè)信息表主鍵/外鍵字段名稱說明類型(精度范圍)備注cEnterpriseIdn 企業(yè)IDChar(10)sEnterpriseNamen 企業(yè)名稱Varchar(200)sShortNamen 簡稱Varchar(50)sAddressn 地址nVarchar(200)E_systemn 企業(yè)所屬系統(tǒng)(0新系統(tǒng),空或1為舊系統(tǒng))Char(1)
產品表表名稱Shop_tbl_ProductInfo數(shù)據(jù)來源存儲數(shù)據(jù)產品表主鍵/外鍵字段名稱說明類型(精度范圍)備注P_Code(PK)n 產品SKU號,即下單號,產品系統(tǒng)編號(p123456789)Char(10)not nullEnterpriseIdn 企業(yè)IDChar(10)not nullP_Namen 產品名稱Nvarchar(100)not nullP_Pricen 產品價格(單位元)MoneyP_UserPricen 產品會員價(單位元)MoneyRemarkn 備注Nvarchar(500)
2);;;;;要實現(xiàn)的功能:刪除舊企業(yè)數(shù)據(jù)及相關的產品,要求用嵌套存儲過程實現(xiàn)3);;;;;存儲過程:包括兩個存儲過程a) 存儲過程一:根據(jù)企業(yè)ID,刪除該企業(yè)及下面的產品:存儲過程代碼如下:/*功能:刪除企業(yè),同時刪除關聯(lián)的表,包括企業(yè)表及其關聯(lián)的產品表數(shù)據(jù)創(chuàng)建人: 創(chuàng)建日期:2007-4-10修改日期:2007-4-10*/CREATE PROCEDURE [DeleteEnterprise] (@EnterpriseID nvarchar(10))ASdeclare @strSQL nvarchar(4000)--刪除企業(yè)產品表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);;;;;存儲過程二:選出舊企業(yè)的數(shù)據(jù),然后通過循環(huán)嵌套的方式,通過循環(huán)語句調用存儲過程一,刪除所有的舊企業(yè)數(shù)據(jù)及其產品數(shù)據(jù)存儲過程代碼如下:/*功能:刪除舊企業(yè)數(shù)據(jù),同時刪除關聯(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)語句WHILE @@FETCH_STATUS = 0BEGIN--下面這行是調用存儲過程一刪除企業(yè)及其產品數(shù)據(jù)exec DeleteEnterprise @EnterpriseIDFetch next from Enterprise_CURSORinto @EnterpriseIDENDCLOSE Enterprise_CURSORDEALLOCATE Enterprise_CURSORGO排行榜
