0

我需要制定一个程序,每次执行某个项目时将其库存减少一个。问题来自于想用旧的方式来做,似乎想不出任何其他的方法。这是我现在写的代码:

CREATE PROCEDURE REDUCESTOCK
@cod_ag numeric(3), //Agency code
@tipo_stock char(1), //Stock to be altered (Merchandising or Artifact)
@producto varchar(5) //Name of the product (Column name)
AS
BEGIN
IF(@tipo_stock='A')
    UPDATE JS_ELECTRODOMESTICO
    SET @producto=@producto-1
    WHERE cod_ag=@cod_ag
ELSE
    PRINT 'error'
END
GO

我收到一个错误,因为我当然无法将 varchar 转换为 int。

任何帮助,将不胜感激。

4

1 回答 1

0

您是否尝试在“producto”参数中指定列名?如果是这样,您将需要构建一个“动态 SQL”字符串并执行它...

IF(@tipo_stock='A')
  declare @sqlcmd varchar(max);
  set @sqlcmd = 'UPDATE JS_ELECTRODOMESTICO SET '
    +@producto+'='+@producto+'-1 WHERE cod_ag='+@cod_ag;
  exec (@sqlcmd);
于 2013-02-22T13:09:39.360 回答