프로시져 질문.

형님 2013.09.13 12:23 Views : 3776

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 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 551
7173 엑셀에서 데이터가져오기 [1] safdsfs 2013.09.22 4725
7172 선입선출 쿼리 문의 [5] 제시카 2013.09.22 4480
7171 이런 경우 검색쿼리가 불가능한건가요?... [2] 이제는선택할때 2013.09.17 3364
7170 sql 로그인 에러 메세지 원인... ? [1] izzy 2013.09.16 7782
7169 SSIS txt 파일 동적 생성 문의 [1] 김진우_283983 2013.09.16 4438
7168 고수님들 도와주세요 [1] 왕만두와우동 2013.09.16 3359
7167 로그 파일 줄이려는데 안됩니다. 조언 부탁 드립니다. [1] ssong 2013.09.13 6558
7166 ip주소로 로그인하기 [3] sdfgaa 2013.09.13 4300
7165 SSIS 에서 DB 데이터를 엑셀에 내보내기 할 때 [2] adb 2013.09.13 4354
7164 인증모드바꾸기 [1] sdfgaa 2013.09.13 3778
7163 엑셀에서 데이터 가져오기 sdfgaa 2013.09.13 5467
7162 테이블에 없는것 골라내기.. [1] 윤미 2013.09.13 4381
7161 null값이 자주 들어가는 칼럼을 index를 만들어도 되나요? [2] 청개구리대왕 2013.09.13 4693
» 프로시져 질문. [2] 형님 2013.09.13 3776
7159 쿼리설치시문제좀해결해주세요 [2] dlawms 2013.09.12 3995
7158 시간 계산 관련 질문좀 드릴게요 [1] 왕만두와우동 2013.09.12 4356
7157 저장프로시저(SP)의 매개변수에 대하여 [4] 캡이다 2013.09.12 4950
7156 뷰테이블 내의 Group by 퍼포먼스 관련 질문드립니다. [3] 하이페츠 2013.09.12 5168
7155 고수분들 초보적인것좀 도와주세요 [5] 왕만두와우동 2013.09.11 4351
7154 mssql 2000 -> 2008 업그레이드 관련 문의 드립니다. [1] 자비드 2013.09.11 6533





XE Login