프로시져 질문.

형님 2013.09.13 12:23 Views : 3784

ALTER PROCEDURE [dbo].[USP_ORDER_BASKET_RECOVER]
@SEQ    INT   = 0
,@CAMPUS_ID   VARCHAR(4) = ''
,@ITEM_CD   VARCHAR(4) = ''
,@ORIGINAL_STOCK INT   = 0
,@ORDER_QUANT  INT   = 0
,@BASKET_QUANT  INT   = 0
,@ETC_QUANT   INT   = 0
,@ORDER_NO   VARCHAR(20) = ''
,@TYPE    VARCHAR(1) =  ''
AS
 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
 SET NOCOUNT ON
  IF @TYPE = '1'
  --이미 바구니에 해당 책이 담겨있으면.
  IF EXISTS (SELECT F_ITEM_CD FROM T_ORDER_BASKET WHERE F_CAMPUS_ID = @CAMPUS_ID AND F_ITEM_CD = @ITEM_CD)
  BEGIN
   SELECT @BASKET_QUANT = F_ORDER_QUANT FROM T_ORDER_BASKET WHERE F_CAMPUS_ID = @CAMPUS_ID AND F_ITEM_CD = @ITEM_CD
   SELECT @SEQ    = F_SEQ   FROM T_ORDER_BASKET WHERE F_CAMPUS_ID = @CAMPUS_ID AND F_ITEM_CD = @ITEM_CD
   --현재 책코드의 갯수와 이미 담겨있는 바구니 의 책 갯수를 더해 100 넘어가면 100으로 강제고정시켜 업데이트
   --남은 권 수는 T_ITEM에 +시켜준다.
   IF  @BASKET_QUANT + @ORDER_QUANT > 100
    BEGIN
     
     SET @ETC_QUANT = (@BASKET_QUANT + @ORDER_QUANT) - 100
     --현재 재고량을 갖고옴.
     SELECT @ORIGINAL_STOCK = F_STOCK FROM T_ITEM WHERE F_ITEM_CD = @ITEM_CD
        
     UPDATE T_ORDER_BASKET
     SET
      F_ORDER_QUANT = 100
      ,F_INS_DT  = GETDATE()
     WHERE F_SEQ = @SEQ 
     
     --T_ITEM 테이블 업데이트.
     UPDATE T_ITEM
     SET F_STOCK = @ORIGINAL_STOCK + @ETC_QUANT
     WHERE F_ITEM_CD = @ITEM_CD
     
    END

   
  END
  ELSE
  BEGIN
   DECLARE CUR CURSOR FOR
    SELECT F_CAMPUS_ID, F_ITEM_CD,F_ORDER_QUANT FROM T_ORDER_DET WHERE F_ORDER_NO = @ORDER_NO
    
    OPEN CUR
    
    FETCH NEXT FROM CUR INTO @CAMPUS_ID, @ITEM_CD, @ORDER_QUANT
    
    WHILE @@FETCH_STATUS = 0
    BEGIN
     --꽁짜 교재 리스트에 해당 아이템 코드가 있으면.
     IF EXISTS (SELECT F_ITEM_CD FROM T_ITEM_FREE WHERE F_ITEM_CD = @ITEM_CD AND F_DEL = 'N')
      BEGIN
       INSERT INTO T_ORDER_BASKET
       (F_CAMPUS_ID,F_ITEM_CD,F_ORDER_QUANT,F_INS_DT,F_TYPE)
       VALUES
       (
        @CAMPUS_ID
        ,@ITEM_CD
        ,@ORDER_QUANT
        ,GETDATE()
        ,'F'
       )
      END
      
     ELSE
     --꽁짜 교재가 아니면.
      BEGIN
       INSERT INTO T_ORDER_BASKET
       (F_CAMPUS_ID,F_ITEM_CD,F_ORDER_QUANT,F_INS_DT,F_TYPE)
       VALUES
       (
        @CAMPUS_ID
        ,@ITEM_CD
        ,@ORDER_QUANT
        ,GETDATE()
        ,'N'
       )
      END
      
  
    END
     CLOSE CUR
     DEALLOCATE CUR

FETCH NEXT FROM CUR INTO @CAMPUS_ID, @ITEM_CD, @ORDER_QUANT

   END
 ELSE IF @TYPE = '2'

BEGIN
  DELETE FROM T_ORDER_MST WHERE F_ORDER_NO = @ORDER_NO
  DELETE FROM T_ORDER_DET WHERE F_ORDER_NO = @ORDER_NO

END

 SET NOCOUNT OFF
 

 

 

 

 

 

주문완료된 상태에서 수정하기 버튼을 누르면 주문테이블에 있는 데이터를 바구니 테이블로 옮기는 프로시져인데요

 

커서문 집어넣은 뒤부터 이상하게..안됩니다.

 

어디가 잘못됐는지 모르겠어용..고수님들 도와주세요~~~

 


 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21872
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12245
» 프로시져 질문. [2] 형님 2013.09.13 3784
7159 쿼리설치시문제좀해결해주세요 [2] dlawms 2013.09.12 4016
7158 시간 계산 관련 질문좀 드릴게요 [1] 왕만두와우동 2013.09.12 4370
7157 저장프로시저(SP)의 매개변수에 대하여 [4] 캡이다 2013.09.12 4970
7156 뷰테이블 내의 Group by 퍼포먼스 관련 질문드립니다. [3] 하이페츠 2013.09.12 5234
7155 고수분들 초보적인것좀 도와주세요 [5] 왕만두와우동 2013.09.11 4368
7154 mssql 2000 -> 2008 업그레이드 관련 문의 드립니다. [1] 자비드 2013.09.11 6548
7153 테이블 합치는 방법에 대하여 질문드려요! [3] WhoAmI 2013.09.11 3819
7152 작업 모니터 사용법 [3] 비홍 2013.09.11 4184
7151 sql서버 메모리용량 [2] 비홍 2013.09.11 4357
7150 외래키 관련해서 질문좀 드립니다. [2] 왕만두와우동 2013.09.11 4742
7149 안녕하세요.. 선배님들 질문이 있습니다 ㅠ.ㅜ [3] WhoAmI 2013.09.10 3893
7148 두 월사이에 일수 구하기 질문요 [8] fins 2013.09.10 4629
7147 SSMS 에서 CTRL + ] (꺽쇠괄호) 를 누르면 다운됩니다. [1] 빌리 2013.09.10 5718
7146 성능모니터의 compilations/sec가 높은 쿼리를 알고 싶습니다. [4] 공유맨 2013.09.10 4346
7145 if문의 원자성에 대한 질문입니다 [10] 코코포도 2013.09.10 4204
7144 group by 를 중복해수 할 수 있나요? [7] taz2315 2013.09.10 4012
7143 문자열 결과물 합치기 [2] taz2315 2013.09.10 4991
7142 프로시져 사용 문의 [2] 제시카 2013.09.10 3789
7141 솔루션 문의 [3] 제시카 2013.09.10 4006





XE Login