读书人

请教这个 SQL 存储过程怎么优化?或

发布时间: 2012-02-21 16:26:23 作者: rapoo

请问这个 SQL 存储过程如何优化??或更好?
CREATE PROCEDURE myPro @vol int,@num int ,@code varchar(20) AS

declare @status int
set @status = convert (int,rand()*10000)

update cost_stock
set cs_end =@vol ,cs_status = @status
where cs_end <> 0 and cs_type = 'A ' and cs_sku = @code

insert into cost_stock (cs_sku,cs_type)
select cs_sku, 'B ' from cost_stock
where cs_status = @status and cs_sku = @code


update cost_stock
set cs_status = 0
where cs_type = 'A ' and cs_sku = @code

GO

谢谢~~~~


[解决办法]
本身都是很简单的sql语句,没有什么优化的余地
[解决办法]
update cost_stock
set cs_end =@vol ,cs_status = @status
where cs_end <> 0 and cs_type = 'A ' and cs_sku = @code

insert into cost_stock (cs_sku,cs_type)
select cs_sku, 'B ' from cost_stock
where cs_status = @status and cs_sku = @code

update cost_stock
set cs_status = 0
where cs_type = 'A ' and cs_sku = @code
--------------------------------------------

insert into cost_stock (cs_sku,cs_type)
select cs_sku, 'B ' from cost_stock
where cs_status = @status and cs_sku = @code
update cost_stock
set cs_end = (case when cs_end <> 0 then @vol else cs_end end) ,cs_status = 0
where cs_end <> 0 and cs_type = 'A ' and cs_sku = @code
-------------------------------------------
你第一句UPDATE里的cs_status = @status 不是白写吗?因为在第三句 做了不管cs_end 是不是等于0 都会让cs_status=0

读书人网 >SQL Server

热点推荐