このエラーで質問がありましたが、外部ストアを呼び出しているか、互換性のない型を使用しようとしているか、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')...
にそれを変更しかし、私はまだ良い方法があるはずと感じています。
オハイオ州私は、私の人生のために、私は成功なしですべてのグーグルを試して、どのように私は協調的な配列の要素を見つけることができます知っていますか? –
上記の編集でこれを実行しました。 mytable.EXISTSを使用します。おそらく、あなたは「良い方法」によってあなたが意味するものを定義するべきです。 – DCookie
私は配列がこのように配列を理解していることを意味しています。array [index] = value、 "目的"値を格納してはならない "インデックス"ではなく "値"を見つける方が良い方法です。私は間違っているかもしれませんし、うまくいくかもしれません... –