2017-04-30 22 views
-2

これをPL/SQLでどのように行うことができますか?私は試しましたが、いくつかのエラーがあります。別のテーブルにデータを転送する


  1. select * from account
  2. 印刷最高のバランスと= 'avilable' STATUS
  3. 挿入最高のバランスと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つのステップがあります、あなたもまた李主張する。
ステップ1 =あなたが作成したカーソル、カーソル 'T'は、見た目はokeyです。
ステップ2 =カーソル 'T'をループし、okeyを表示します。
ステップ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; 
関連する問題