Oracle缺少逗号错误

时间:2015-02-12 12:36:19

标签: mysql oracle

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

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

我收到一条错误消息,表示缺少逗号,我不知道逗号会去哪里?如果你能帮忙请。

4 个答案:

答案 0 :(得分:2)

让我们稍微清理你的代码,我们会看到问题出在哪里:

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, ... );

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

答案 1 :(得分:1)

将日期也用单引号

答案 2 :(得分:1)

有三个左括号(()和两个右括号())。我建议这可能是你的问题。

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

答案 3 :(得分:0)

据推测,您打算将看起来像日期的字符串作为日期:

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

如果这是Oracle并且您打算将其作为日期,那么您应该使用date关键字并输入缺少的括号:

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

此外,当您插入表格时,您应该(几乎)始终使用显式列。这种结构假定hte表只有一列,这似乎不太可能。