2017-05-28 16 views
0

私はゲームのDBを作成し、IDのテーブル(ベクトル)をtype = 'x'にする必要があります。 IDは番号です。複数のIDをネストした表の型に選択するにはどうすればよいですか?

create or replace procedure add_items 
is 
    TYPE ID_TAB IS TABLE OF NUMBER(20); 
    id_eq_weapon ID_TAB; 
begin 
    select id into id_eq_weapon from EQ where TYPE='weapon'; --ERROR HERE 
    for [..] 

誰かが助けることができますか?

+1

通常、エラーには、何が間違っているかを正確に説明するコードまたはメッセージが付いています。あなたが学びたいなら、それらを読むことを練習するべきです。 –

+0

@CraigYoungエラー(16,18):PLS-00642:ローカル・コレクション型はSQL文では使用できません。 それはまったく助けません。 – Xalion

+1

もちろんそれは役に立ちます。質問に追加してください。 –

答えて

1

コレクションに値を設定していますが、コードではスカラー変数を設定するための構文が使用されています。代わりにこれを試してみてください:

select id 
bulk collect into id_eq_weapon 
from EQ where TYPE='weapon'; 

「この選択DBMS_OUTPUT.PUT_LINE(id_eq_weapon)後の値をチェックする方法、何も表示さdidntは?」

それはコレクションです:あなたがエントリを参照する必要がありますインデックス、例えば

for idx in id_eq_weapon.first().. id_eq_weapon.last() 
loop 
    dbms_output.put_line(id_eq_weapon(idx)); 
end loop; 

PL/SQLコレクションに関するOracleのマニュアルを読んだほうがよいでしょう。 Find out more

+0

ありがとう!それは動作しますが、この後に値をチェックする方法は? 'dbms_output.put_line(id_eq_weapon);' didntは何でも表示します – Xalion

+0

'id_eq_weapon'はコレクションです。 'dbms_output.put_line'は文字列をとります。一度に1つの要素をループするか、デバッガを使用する必要があります。 –

+0

私はコレクションについて聞きません。ありがとう。 – Xalion

関連する問題