2017-08-11 13 views
0

以下のスクリプトは、テーブルタイプのテーブルに値を作成して追加するためのスクリプトです。 このテーブルのEXISTSメソッドを使用してセルに値が存在するかどうかを調べる方法テーブルタイプテーブル(マトリックステーブル)でEXISTSメソッドを使用して値が存在するかどうかを調べる方法

DECLARE 
    TYPE RecType IS RECORD 
    (
     value1 NUMBER, 
     value2 NUMBER, 
     value3 NUMBER 
    ); 
    TYPE TblType IS TABLE OF RecType INDEX BY PLS_INTEGER; 
    TYPE TblOfTblType IS TABLE OF TblType INDEX BY PLS_INTEGER; 
    matrix TblOfTblType; 

BEGIN 
    /*Writing the data*/ 
    FOR i IN 4 .. 6 LOOP 
     FOR j IN 1 .. 3 LOOP 
     matrix (i) (j).value1 := i * j; 
     matrix (i) (j).value2 := i + j; 
     matrix (i) (j).value3 := i - j; 
     END LOOP; 
    END LOOP; 
END; 
+0

あなたは2つのアカウントを持っていますか(https://stackoverflow.com/q/45564132/266304)、あるいは誰かが同じコースをやっているのですか? –

+0

haha​​ ... nope..thisは私の唯一のアカウントです。 – One

答えて

2

あなたは行が存在する場合、最初のチェック、だけにして、列がその行に存在するかどうかを確認(またはXそしてY、または私は、J、またはあなたがセルを識別したいが)する必要があります。

例えば、セル(1,2)かどうかを確認することはあなたの例では存在します

if matrix.exists(1) and matrix(1).exists(2) then 
    dbms_output.put_line('Yes'); 
    else 
    dbms_output.put_line('No'); 
    end if; 

'いいえ' を出力します。

、セル(6,3)が存在するかどうかを確認するには: 'はい' を出力し

if matrix.exists(6) and matrix(6).exists(3) then 
    dbms_output.put_line('Yes'); 
    else 
    dbms_output.put_line('No'); 
    end if; 

います。

2つのステップに注目してください。 matrix.exists(1)がfalseの場合、matrix(1).exists(2)を検索しないでください。あなたが最初のチェックを持っていなかったとだけはやった場合:

if matrix(1).exists(2) then 
    dbms_output.put_line('Yes'); 
    else 
    dbms_output.put_line('No'); 
    end if; 

あなたはORA-01403: no data found例外を取得したいです。

+0

ありがとうございました!!! – One

関連する問題