我正在尝试将数据插入子类型表中,这是代码:

insert into person_tab
 values( salesman_t( 's001', 'williams', 'john', 1990-02-01 , appoint_list_t() );


我收到一条错误消息,提示缺少逗号,不知道逗号还会去哪里?如果可以的话请帮忙。

最佳答案

让我们整理一下代码,然后看问题出在哪里:

INSERT
INTO person_tab
VALUES (
    salesman_t( 's001',
                 'williams',
                 'john',
                 1990-02-01 ,
                 appoint_list_t())
  );


现在对我来说,一个大的危险信号是第4个条目1990-02-01中的日期。在oracle中,如果要使用日期,则应将其真正包装在to_date函数中,以使它知道正确传递。您可以通过执行DATE来检查列是否为desc person_tab类型。

...
                 TO_DATE('1990-02-01','YYYY-MM-DD') ,
                 appoint_list_t())
...


现在,代码的最大问题可能是您没有描述要插入此日期的列,而这些日期将提供您确实不想要的结果。您要执行的操作是:

INSERT INTO table
(column1, column2, ... )
VALUES
(expression1, expression2, ... );


将每一列匹配到其各自的表达式。
祝好运!

关于mysql - Oracle缺少逗号错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28477654/

10-15 21:15