0

あるアイテムの在庫を、実行するたびに 1 つずつ減らす手順を作成する必要があります。問題は、古い方法でやりたいということから来ており、他の方法は考えられないようです。これは私が今書いたコードです:

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 に答える