2017-02-01 20 views
0

このエラーで質問がありましたが、外部ストアを呼び出しているか、互換性のない型を使用しようとしているか、VARRAYを使用しています。だから私は非常に簡単な例をセットアップし、それでも動作させることはできません。PLSQLでMEMBER OFを使用する方法

DECLARE 
TYPE mytype IS TABLE OF VARCHAR2(4) INDEX BY PLS_INTEGER; 
mytable mytype; 
BEGIN 
    mytable((mytable.COUNT+1)) := 'COD1'; 
    mytable((mytable.COUNT+1)) := 'COD2'; 
    mytable((mytable.COUNT+1)) := 'COD3'; 
    mytable((mytable.COUNT+1)) := 'COD4'; 
    --IF 'COD1' MEMBER OF mytable THEN DBMS_OUTPUT.PUT_LINE('We have the code'); END IF; 
    FOR i IN 1..mytable.COUNT LOOP 
    DBMS_OUTPUT.PUT_LINE(mytable(i)); 
    END LOOP; 
END; 

私はそれを実行する場合、私はこれを取得:

COD1 
COD2 
COD3 
COD4 

私はIFのコメントを外した場合は(私が使用する予定のものを)私はこのエラーを取得します。

PLS-00306: wrong number or types of arguments in call to MEMBER OF 

おそらく私は正しく使用していないか、または何かが間違っています。

私はループでこれを使用しようとしています。私が使用していたコードを「配列」に保存しておきます。 私の最初の解決策は、 ".COD1..COD2"のような文字列に追加することでした。単純なINSTRを実行しますが、正しいとは思わないし、配列が好きです。 私はそれがすべきだと思うように働くだけなら、私が望んでいたことをするその機能(メンバー)を聞いた。

正しく使用する方法、間違っていること、問題をより良い方法で解決する方法を教えてください。ほとんどが

... は私が

-- Declare 
TYPE mytype IS TABLE OF VARCHAR2(4) INDEX BY VARCHAR(4); 
mytable mytype; 
-- Fill 
mytable('COD1') := 'COD1'; -- kind of redundant I only need the index 
-- The magic 
IF mytable.EXISTS('COD1')... 

にそれを変更しかし、私はまだ良い方法があるはずと感じています。

答えて

1

MEMBER OFはネストした表でのみ使用できます。連想配列でそれを使用しようとしています。ここに素敵なexplanation of the differencesがあります。

+0

オハイオ州私は、私の人生のために、私は成功なしですべてのグーグルを試して、どのように私は協調的な配列の要素を見つけることができます知っていますか? –

+0

上記の編集でこれを実行しました。 mytable.EXISTSを使用します。おそらく、あなたは「良い方法」によってあなたが意味するものを定義するべきです。 – DCookie

+0

私は配列がこのように配列を理解していることを意味しています。array [index] = value、 "目的"値を格納してはならない "インデックス"ではなく "値"を見つける方が良い方法です。私は間違っているかもしれませんし、うまくいくかもしれません... –

1

NESTED TABLE TYPEでMEMBER関数を使用する方法を説明しようとしました。連想配列では使用できません。それが役に立てば幸い。

SET serveroutput ON; 
DECLARE 
type my_tab 
IS 
    TABLE OF VARCHAR2(100); 
    tab my_tab; 
BEGIN 
    tab:=my_tab('AVRAJIT','SHUBHOJIT'); 
    IF 'AVRAJIT' member OF (tab) THEN 
    dbms_output.put_line('Yes'); 
    ELSE 
    dbms_output.put_line('No'); 
    END IF; 
END; 
関連する問題