2016-10-25 5 views
-2

ネストされたIFをpl/sqlブロックに書き込もうとしています。どうすれば適切に手配しますか?PL/SQLでネストされたIF

IF r1.CABLE_TYPE = "A" THEN 
var_root = FC_CPSCBPR1.C_111_SCPSCBP 

私は今

If var_root is "TRUE" /*If the value is populated*/ 
    THEN 
     IF ... 
      THEN 
Elsif var_root is "FALSE" /*If the value is not found*/ 

     THEN 
+0

これが問題の一部であるが、文字リテラルの一重引用符を必要とするかどうかは不明です。 「A」ではなく「A」である。 –

+0

あなたの質問は不明です。ネストされたIFステートメントで何が問題になっていますか? – APC

答えて

5

を含める必要がLogicはIFのネストされたステートメントのためthis exampleを見てください。
それぞれを終了するにはEND IFが必要です。

DECLARE 
    PROCEDURE p (
    sales NUMBER, 
    quota NUMBER, 
    emp_id NUMBER 
) 
    IS 
    bonus NUMBER := 0; 
    BEGIN 
    IF sales > (quota + 200) THEN 
     bonus := (sales - quota)/4; 
     IF whatever_else_you_like THEN 
     do_something_here; 
     END if; 
    ELSE 
     IF sales > quota THEN 
     bonus := 50; 
     ELSE 
     bonus := 0; 
     END IF; 
    END IF;  
    DBMS_OUTPUT.PUT_LINE('bonus = ' || bonus);  
    UPDATE employees 
    SET salary = salary + bonus 
    WHERE employee_id = emp_id; 
    END p; 
BEGIN 
    p(10100, 10000, 120); 
    p(10500, 10000, 121); 
    p(9500, 10000, 122); 
END; 
/

あなたが必要としてあなたはまた、多くのELSIFステートメントを持つことができます。例えば。このPL/SQLブロック構造の例で

DECLARE 
    PROCEDURE p (sales NUMBER) 
    IS 
    bonus NUMBER := 0; 
    BEGIN 
    IF sales > 50000 THEN 
     bonus := 1500; 
    ELSIF sales > 35000 THEN 
     bonus := 500; 
    ELSE 
     bonus := 100; 
    END IF; 

    DBMS_OUTPUT.PUT_LINE (
     'Sales = ' || sales || ', bonus = ' || bonus || '.' 
    ); 
    END p; 
BEGIN 
    p(55000); 
    p(40000); 
    p(30000); 
END; 
/
+0

私が尋ねると、私のボーナス:=(売上 - クォータ)/ 4が満たされたときに、もう1つのIFステートメントを含める必要があります。 –

+0

@SoomSatyam:そこにIF文を追加しました。上記の例を使用してこれらを任意のレベルにネストすることができます。 – Gerrat

1

ルック - あなたはEND IFやセミコロン;を使用してコードの閉じたブロックとしてIF文の各1を終了することを忘れないようにする必要があります。

BEGIN 

    IF 10 > 5 THEN 

    IF 10 < 20 THEN 
     dbms_output.put_line('statement 1 from nested if'); 
    ELSE 
     dbms_output.put_line('statement 2 from nested if'); 
    END IF; 

    ELSE 
    dbms_output.put_line('statement not from nested if'); 
    END IF; 

END; 
関連する問題