📄 供销商管理.sql
字号:
use DB_SMS
go
-----------------------------------------------------
--1. proc_getProviderInfo
--功能:查询供货商信息
--输入:供货商名称,商品分类或开始和结束日期
--输出:供货商信息(TB_PROVIDER, TB_STOCK_SHEET, TB_SUPPLY, TB_GOODS_TYPE),
-----------------------------------------------------
exec proc_getProviderInfo 'P'
if exists (select 1 from sysobjects where name = 'proc_getProviderInfo')
drop procedure proc_getProviderInfo
go
create procedure proc_getProviderInfo
@proName varchar(30) = '', --供货商名称
@gtName varchar(20) = '' --商品类型名
as
if @proName != ''
--根据供货商名称查询
select pro.proId, proName, proLinkName, proTelephone, gtName
from TB_PROVIDER as pro left join TB_SUPPLY as sup on pro.proId = sup.proId, TB_GOODS_TYPE as gt
where sup.gtId = gt.gtId and proName like '%'+ @proName + '%'
else if @gtName != ''
--根据商品类型名查询
select pro.proId, proName, proLinkName, proTelephone, gtName
from TB_PROVIDER as pro, TB_SUPPLY as sup, TB_GOODS_TYPE as gt
where pro.proId = sup.proId and sup.gtId = gt.gtId and gtName like '%' + @gtName + '%'
else
--获取商品信息
select pro.proId, proName, proLinkName, proTelephone, gtName
from TB_PROVIDER as pro, TB_SUPPLY as sup, TB_GOODS_TYPE as gt
where pro.proId = sup.proId and sup.gtId = gt.gtId
go
-----------------------------------------------------
--2. proc_addProvider
--功能:添加供货商
--输入:供货商编号,供货商名称,联系人,电话,提供商品类别
--输出:成功或失败信息
-----------------------------------------------------
if exists (select 1 from sysobjects where name = 'proc_addProvider')
drop procedure proc_addProvider
go
create procedure proc_addProvider
@proId varchar(17), --供货商编号
@proName varchar(30), --供货商名称
@proLinkName varchar(10), --联系人
@proTelephone varchar(30), --联系电话
@goodsList varchar(100), --商品类型列表
@state int output --输出状态
as
begin transaction
declare @errorSum int --错误累计
set @errorSum = 0
--插入供货商信息
insert into TB_PROVIDER values(@proId, @proName, @proLinkName, @proTelephone)
set @errorSum = @errorSum + @@error
print @errorSum
--循环从商品类型列表中获取商品类型,并进行添加
declare @gtName varchar(20) --商品类型名
declare @pos int --逗号出现的位置
declare @start int --开始截取的位置
set @start = 1
set @pos = charindex(',', @goodsList, 0)
declare @lastSupId varchar(17)
set @lastSupId = '1'
while (@pos <> 0)
begin
set @gtName = substring(@goodsList, @start, @pos - @start)
set @start=@pos +1
set @pos=charindex(',', @goodsList, @pos+1)
--根据商品类型名获取商品类型编号
declare @gtId varchar(17)
select @gtId=gtId from TB_GOODS_TYPE where gtName = @gtName
--添加商品类型
declare @supId varchar(17)
while 1=1
begin
exec proc_createID 'SUP', @supId output
if @supId <> @lastSupId
begin
set @lastSupId = @supId
break
end
end
insert into TB_SUPPLY values(@supId, @proId, @gtId)
set @errorSum = @errorSum + @@error
end
if @errorSum <> 0
begin
--回滚事务
rollback transaction
set @state = 0
end
else
begin
--提交事务
commit transaction
set @state = 1
end
go
-----------------------------------------------------
--3. proc_updateProvider
--功能:修改供货商
--输入:供货商编号,供货商名称,联系人,电话,提供商品类别
--输出:成功或失败信息
-----------------------------------------------------
if exists (select 1 from sysobjects where name = 'proc_updateProvider')
drop procedure proc_updateProvider
go
create procedure proc_updateProvider
@proId varchar(17), --供货商编号
@proName varchar(30), --供货商名称
@proLinkName varchar(10), --联系人
@proTelephone varchar(30), --联系电话
@goodsList varchar(100), --商品类型列表
@state int output --输出状态
as
begin transaction
declare @errorSum int --错误累计
set @errorSum = 0
--修改供货商信息
update TB_PROVIDER set proName = @proName,
proLinkName = @proLinkName, proTelephone = @proTelephone
where proId = @proId
set @errorSum = @errorSum + @@error
print @errorSum
--删除供销商的供货信息
delete from TB_SUPPLY where proId = @proId
--循环从商品类型列表中获取商品类型,并进行添加
declare @gtName varchar(20) --商品类型名
declare @pos int --逗号出现的位置
declare @start int --开始截取的位置
set @start = 1
set @pos = charindex(',', @goodsList, 0)
declare @lastSupId varchar(17)
set @lastSupId = '1'
while (@pos <> 0)
begin
set @gtName = substring(@goodsList, @start, @pos - @start)
set @start=@pos +1
set @pos=charindex(',', @goodsList, @pos+1)
--根据商品类型名获取商品类型编号
declare @gtId varchar(17)
select @gtId=gtId from TB_GOODS_TYPE where gtName = @gtName
--添加商品类型
declare @supId varchar(17)
while 1=1
begin
exec proc_createID 'SUP', @supId output
if @supId <> @lastSupId
begin
set @lastSupId = @supId
break
end
end
insert into TB_SUPPLY values(@supId, @proId, @gtId)
set @errorSum = @errorSum + @@error
end
if @errorSum <> 0
begin
--回滚事务
rollback transaction
set @state = 0
end
else
begin
--提交事务
commit transaction
set @state = 1
end
go
select * from tb_goods_type
select * from tb_provider
select * from tb_supply
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -