2017-05-28 27 views
0

我製作了遊戲的數據庫,並且我需要製作其中type ='x'的ID表(矢量)。 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)之後檢查值;沒有顯示什麼?」

這是一個集合:你需要引用條目與一個指數,例如

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);'沒有顯示任何東西 – Xalion

+0

'id_eq_weapon'是一個集合。 'dbms_output.put_line'接受一個字符串。您需要一次循環一個元素,或使用調試器。 –

+0

我還沒有聽說有關收集。謝謝。 – Xalion