2017-04-19 88 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