2017-04-19 82 views
0

我是一個新手與pl sql,我正面臨着插入到嵌套表中的一些問題(我正在使用這些只是爲了測試過程)。 所以我的代碼是:插入到嵌套表plsql

insert into t_prenotazioni 
     (nro_cliente, data_disponibilita) 
    values 
     (righe.nro_cliente, v_data_disponibilita); 

其中t_prenotazioni是我定義的類型的表,righe.nro_cliente是我從遊標獲取和v_data_disponibilita是一個變量的值。 ,我得到的錯誤是:

PLS-00330無效的使用類型名稱或亞型

+0

你可以插入一個表,而不是一個變量。如果你需要填充一個變量,你需要一個任務或者SELECT ... INTO ... FROM ...的一些參數。請嘗試更好地解釋你想要獲得什麼幫助。 – Aleksej

+0

謝謝。我試圖聲明一個嵌套表,我這樣做:「type prenotazioni is type_prenotazioni; t_prenotazioni prenotazioni;」。然後我試圖插入到這個表中,表的類型有2個字段。 – editLxo

+0

@editLxo你必須在PL./SQL塊中使用它 – user75ponic

回答

1

你可能想要做這樣的事情:

declare 
    type type_prenotazioni is record(nro_cliente number, data_disponibilita date); 
    type prenotazioni is table of type_prenotazioni; 
    vPrenotazioni prenotazioni; 
begin 
    vPrenotazioni := new prenotazioni(); 
    vPrenotazioni.extend(1); 
    vPrenotazioni(1).nro_cliente := 10; 
    vPrenotazioni(1).data_disponibilita := sysdate; 
    -- 
    for i in vPrenotazioni.first .. vPrenotazioni.last loop 
     dbms_output.put_line(vPrenotazioni(i).nro_cliente || ' - ' || 
           to_char(vPrenotazioni(i).data_disponibilita, 'dd/mm/yyyy') 
           ); 
    end loop; 
end; 

我會stronlgy推薦看看the Oracle documentation以改善您的知識;這只是一個簡單的小例子,但您可能想要做許多不同的事情。

+0

謝謝你的回答。我現在唯一的問題是,當你做vPrenotazioni.extend(1)時,在下一個插入(因爲我不是隻在表中插入1個值,而是插入多個),表中的值被覆蓋了嗎? – editLxo

+0

這裏我擴展插入一個值;如果您需要插入多條記錄,則需要相應地進行擴展,然後使用vPrenotazioni(i),其中i是您的電話號碼。或者,您可能需要查看SELECT ... BULK COLLECT INTO ....查看一些BULK COLLECT示例以瞭解如何大量填充您的結構 – Aleksej

+0

好的非常感謝。 – editLxo