2017-04-30 1 views
-2

어떻게 PL/SQL에서이 작업을 수행 할 수 있습니까? 시도했지만 오류가 있습니다.다른 테이블로 데이터 전송


  1. select * from account
  2. 인쇄 가장 높은 균형 = '기한'상태
  3. 삽입 가장 높은 BALANCE 및 STATUS = '고정'테이블 acc_locked-

DECLARE 
    CURSOR T IS 
     SELECT CUST_ID,A_NO ,TYPE, BALANCE,STATUS 
     FROM ACCOUNT 
     where STATUS=('نشط') 
     order by BALANCE desc; 

    CURSOR D IS 
     SELECT CUST_ID,A_NO ,TYPE, BALANCE,STATUS 
     FROM ACC_LOCKED 
     order by BALANCE desc; 

    ci ACC_LOCKED.CUST_ID%TYPE; 
    an ACCOUNT.A_NO%TYPE; 
    ty ACCOUNT.TYPE%TYPE; 
    ba ACCOUNT.BALANCE%TYPE; 
    st ACCOUNT.STATUS%TYPE; 

BEGIN 
    OPEN T ; 

    FOR p IN 1..3 LOOP 
     FETCH T INTO ci , an ,ty , ba ,st ; 
     DBMS_OUTPUT.PUT_LINE(ci ||' '|| an||' '||ty||' '||ba ||' '||st); 
    END LOOP ; 

    CLOSE T ; 

    INSERT INTO ACC_LOCKED (CUST_ID,A_NO ,TYPE, BALANCE,STATUS) 
    select CUST_ID,A_NO ,TYPE, BALANCE,STATUS 
    from ACCOUNT 
    where STATUS=('موقوف') 
    order by BALANCE desc; 
END; 
+0

하지만 약간의 오차가 ... * 어떤 오류를 :

은 어쩌면이 더 simplefied 예를 들어 당신에게 아이디어를 줄 것이다!? 너는 무엇을 시도 했는가? – Rahul

+0

테이블 구조가 무엇입니까? –

+0

테이블 구조 CUST_ID \t A_NO \t TYPE \t BALANCE \t 상태 –

답변

0

당신에게 할 3 단계, 당신은 또한 리가 있어요. sted.
1 단계 = 당신이 만든 커서, 'T'커서, 오케이보세요.
2 단계 = 커서 'T'를 반복하면 모양이 바뀝니다.
3 단계 = 커서 'T'를 이미 닫았으므로 작동하지 않습니다. 내가 시도 *

DECLARE 
     CURSOR T IS 
       SELECT CUST_ID,A_NO ,TYPE, BALANCE,STATUS 
       FROM ACCOUNT 
       WHERE STATUS='Available' 
       ORDER BY BALANCE DESC; 
BEGIN 
     FOR recT IN T LOOP 
       -- You can print every value form cursor T this way. 
       DBMS_OUTPUT.PUT_LINE(recT.Cust_Id); 

       --Insert in table, add every column to insert here. 
       INSERT INTO Acc_Locked (Cust_Id, A_No) 
       VALUES(recT.Cust_Id, recT.A_No); 
     END LOOP; 

     -- Save what you just inserted. 
     COMMIT; 
END; 
관련 문제