Q&A

  • SQLServer 스토어드프로시저가 실행은 되는데 값이 변화가 없어요?
1. 작성한 스토어드 프로시저

CREATE PROC sp_JajaeProcess
              @JajaeState   varchar(10),
@JajaeAction varchar(10),
              @NewQty int,  
              @OldQty int, @ProductID  int
AS


IF @JajaeState = 'N'
BEGIN
  IF @JajaeAction = '입력'
         BEGIN
         Update CY_Product  SET Qty = Qty + @NewQty      Where ProductID = @ProductID
         END
  IF @JajaeAction = '출력'
         BEGIN
         Update CY_Product  SET Qty = Qty - @NewQty    Where ProductID = @ProductID
         END
END

IF @JajaeState = 'M'
BEGIN
  IF @JajaeAction = '입력'
         BEGIN
         Update CY_Product  SET Qty = Qty + @NewQty - @OldQty     Where ProductID = @ProductID
         END
  IF @JajaeAction = '출력'
         BEGIN
         Update CY_Product  SET Qty = Qty - @NewQty + @OldQty     Where ProductID = @ProductID
         END
END

IF @JajaeState = 'D'
BEGIN
  IF @JajaeAction = '입력'
         BEGIN
         Update CY_Product  SET Qty = Qty + @NewQty     Where ProductID = @ProductID
         END
  IF @JajaeAction = '출력'
         BEGIN
         Update CY_Product  SET Qty = Qty - @NewQty      Where ProductID = @ProductID
         END
END



2. 쿼리애널라이저에서는

  exec sp_JajaeProcess 'N' ,'출력',10,0,1           -> 정상으로 수불에서 -10 됨.


3. 델파이코딩에서

      with stpJajaeProcess do
       begin
       Parameters.ParamByName('@JajaeState').Value   := JajaeAction;
       Parameters.ParamByName('@JajaeAction').Value  :=  qryJajaeMaster.FieldByName('State').asString;
       Parameters.ParamByName('@NewQty').Value       := NewQty;
       Parameters.ParamByName('@OldQty').Value       := OldQty;
       Parameters.ParamByName('@ProductID').Value    := strtoint(FrmJajaeDetail.JajaeProductID);

       ExecProc;
       end;


아 !! 실행은 되는데.. 값이 안바뀜~~ 도무지 이해를 못하겠습니다. 살려주세요


그래서...


   Parameters.CreateParameter('@JajaeState',  ftString,  pdInput, 10, JajaeAction);
        Parameters.CreateParameter('@JajaeAction', ftString,  pdInput, 10, qryJajaeMaster.FieldByName('State').asString);
        Parameters.CreateParameter('@NewQty',      ftInteger, pdInput, 1,  NewQty);
        Parameters.CreateParameter('@OldQty',      ftInteger, pdInput, 1,  OldQty);
        Parameters.CreateParameter('@ProductID',   ftInteger, pdInput, 1,  strtoint(FrmJajaeDetail.JajaeProductID));

이렇게 직접 CreateParameter 해보았는데도 안됩니다.
어찌 해야 합니까? 아~ ~~ ADO라서 Profiler로 돌리려해도 DB권한이 없어서 못 돌리고. 애혀
2  COMMENTS
  • Profile
    nilriri™ 2005.01.25 08:37
       Parameters.CreateParameter('@JajaeState',  ftString,  pdInput, 10, JajaeAction);
            Parameters.CreateParameter('@JajaeAction', ftString,  pdInput, 10, qryJajaeMaster.FieldByName('State').asString);
            Parameters.CreateParameter('@NewQty',      ftInteger, pdInput, 1,  NewQty);  <-- 자릿수 틀린거 아닌가요?
            Parameters.CreateParameter('@OldQty',      ftInteger, pdInput, 1,  OldQty);
            Parameters.CreateParameter('@ProductID',   ftInteger, pdInput, 1,  strtoint(FrmJajaeDetail.JajaeProductID));

    parameters.clear;
    를 먼저 해보세요...

    try
       :
       :
       execproc;
    except
       on e:exception do
       begin
          showmessage(e.message);
       end;
    end;

    혹시 에러 없는지 확인해 보세요.~


  • Profile
    고부열 2005.01.26 01:07
    우째서 이런 경우가 발생을 하다니.. 감사함다