我正在尝试将数据插入子类型表,这里是代码:
insert into person_tab
values( salesman_t( 's001', 'williams', 'john', 1990-02-01 , appoint_list_t() );
我收到一条错误消息,表示缺少逗号,我不知道逗号会去哪里?如果你能帮忙请。
答案 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表只有一列,这似乎不太可能。