社区交流

MSSQL Server 存储过程嵌套示例

核心提示:事例数据库表:企业信息表表名称prd_wxt_enterprise_tbl_EnterpriseInfo数据来源
存储数据企业信息表主键/外键 字段名称说明类型

1)事例数据库表: 企业信息表 表名称
prd_wxt_enterprise_tbl_EnterpriseInfo 数据来源 存储数据 企业信息表
主键/外键 字段名称 说明 类型 备注 cEnterpriseId n企业ID Char(10)
sEnterpriseName n企业名称 Varchar(200) sShortName n简称 Varchar(50)
sAddress n地址 nVarchar(200) E_system n企业所属系统 Char(1)

产品表 表名称 Shop_tbl_ProductInfo 数据来源 存储数据 产品表 主键/外键
字段名称 说明 类型 备注 P_Code(PK)
n产品SKU号,即下单号,产品系统编号(p123456789) Char(10) not null
EnterpriseId n企业ID Char(10) not null P_Name n产品名称 Nvarchar(100)
not null P_Price n产品价格 Money P_UserPrice n产品会员价 Money Remark
n备注 Nvarchar(500) 2)要实现的功能:
删除旧企业数据及相关的产品,要求用嵌套存储过程实现
3)存储过程:包括两个存储过程
a)存储过程一:根据企业ID,删除该企业及下面的产品: 存储过程代码如下:
/* 功能:删除企业,同时删除关联的表,包括企业表及其关联的产品表数据
创建人: 创建日期:2007-4-10 修改日期:2007-4-10 */ CREATE PROCEDURE
[DeleteEnterprise] ( @EnterpriseID nvarchar(10) ) AS declare @strSQL
nvarchar(4000) –删除企业产品表 select @strSQL = delete from
Shop_tbl_ProductInfo where EnterpriseId=+@EnterpriseID+; exec(@strSQL)
–删除企业表 select @strSQL = delete from
prd_wxt_enterprise_tbl_EnterpriseInfo where
cEnterpriseID=+@EnterpriseID+; exec(@strSQL) GO

b)存储过程二:选出旧企业的数据,然后通过循环嵌套的方式,通过循环语句调用存储过程一,删除所有的旧企业数据及其产品数据
存储过程代码如下: /* 功能:删除旧企业数据,同时删除关联的表,包括
创建人: 创建日期:2007-4-11 修改日期:2007-4-11 */ CREATE PROCEDURE
[DeleteOldEnterprise] AS declare @strSQL nvarchar(4000) declare
@EnterpriseID nvarchar(10) DECLARE Enterprise_CURSOR Cursor FOR Select
cEnterpriseId from prd_wxt_enterprise_tbl_EnterpriseInfo where
e_system=1 or e_system is null OPEN Enterprise_CURSOR Fetch next from
Enterprise_CURSOR into @EnterpriseID –以下一直到END都是循环语句 WHILE
@@FETCH_STATUS = 0 BEGIN –下面这行是调用存储过程一删除企业及其产品数据
exec DeleteEnterprise @EnterpriseID Fetch next from Enterprise_CURSOR
into @EnterpriseID END CLOSE Enterprise_CURSOR DEALLOCATE
Enterprise_CURSOR GO

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章