使用WHERE使用存储过程更新表?

时间:2012-11-09 09:02:22

标签: stored-procedures sql-update where-clause

我需要修改一个存储过程,它将更新实时数据库的价格表。 我使用的是MS SQL Server 2005,存储过程用作SAP BI中的查询。

我有这个部分:

SET @cmd ='Update PriceList 5'
SET @sql ='UPDATE a SET a.price= round( (b.price*0.9),0), a.currency=b.currency  FROM      ['+@trgDB+'].[dbo].[ITM1] a '
SET @sql =@sql+' INNER JOIN ['+@trgDB+'].[dbo].[ITM1] b ON ( a.ItemCode=b.itemcode AND   b.PriceList=1) '
SET @sql =@sql+' WHERE a.PriceList=5 '
IF @filter IS NOT NULL BEGIN
    SET @sql =@sql+' AND a.[ItemCode] LIKE '+char(39)+@filter+'%'+char(39)+' '
    SET @cmd = @cmd+' ('+@filter+'%'+') '
END 

这将根据过滤器更新每个项目的价格。 我需要保留一些项目不变,那么如何在上面的代码中添加NOT LIKE'VSK%'和NOT LIKE'VFH%'?如果丢弃了flter并不重要,但是我需要更新每个价格,除非不喜欢'VSK%'并且不喜欢'VFH%'。

table http://qupload.com/images/clipbosjs.jpg

0 个答案:

没有答案