C# 附加信息:ORA-00917:缺少逗号

C# 附加信息:ORA-00917:缺少逗号,c#,oracle,C#,Oracle,我有点迷路了,我不知道下一步该怎么办 com.CommandText =@"insert into TDESADV_H_T (spplr_mailbox,message_id,asn_no,TO_DATE('message_date', 'YYYY/MM/DD HH24:MI'))" + " VALUES(:spplr_mailbox,:message_id,:asn_no,:message_date)"; 它肯定是在消息日期。查询接收到: com.Pa

我有点迷路了,我不知道下一步该怎么办

com.CommandText =@"insert into TDESADV_H_T (spplr_mailbox,message_id,asn_no,TO_DATE('message_date', 'YYYY/MM/DD HH24:MI'))"
                    + " VALUES(:spplr_mailbox,:message_id,:asn_no,:message_date)";
它肯定是在消息日期。查询接收到:

com.Parameters.AddWithValue("message_date", edi.MESSAGE_SEND_DATE);

时间是:2017/10/23 18:01。我不确定是什么问题。

TO_DATE('message_DATE','YYYY/MM/DD HH24:MI')
插入
语句中应该是一个列名,而不是一个列名。这正是它所抱怨的

TO_DATE('message_DATE','YYYY/MM/DD HH24:MI')
中的INSERT语句应该是一个列名,而不是一个列名。这正是它所抱怨的

您的SQL语法已关闭,插入应该如下所示:

INSERT INTO TDESADV_H_T (spplr_mailbox, message_id, asn_no, message_date)
VALUES (:spplr_mailbox, :message_id, :asn_no, :message_date);

关于对
to_DATE
的调用,如果发生这种情况,应该是在绑定C代码中的参数时。理想情况下,您应该能够绑定一个C类型,API可以自动将该类型绑定到
message\u date
列,这样就不需要调用
to\u date

您的SQL语法已关闭,插入内容应该如下所示:

INSERT INTO TDESADV_H_T (spplr_mailbox, message_id, asn_no, message_date)
VALUES (:spplr_mailbox, :message_id, :asn_no, :message_date);


关于对
to_DATE
的调用,如果发生这种情况,应该是在绑定C代码中的参数时。理想情况下,您应该能够绑定一个C类型,API可以自动将其发送到
message_date
列,这样就不需要调用
to_date

正如@LasseVågsætherKarlsen引导我的那样。我试着用tou_DATE作为列名。我所要做的就是在values()中使用函数。谢谢大家。

因为@LasseVågsætherKarlsen引导了我。我试着用tou_DATE作为列名。我所要做的就是在values()中使用函数。非常感谢各位。

请查看您试图插入的字段,字段列表中似乎有一个
to\u DATE
表达式,这绝对是不正确的语法。它应该是
INSERT-INTO-table(fields)VALUES(VALUES)
,您有
INSERT-INTO-table(fields,TO-DATE(…)…)…
我应该在哪里指定oracle类型,而我正试图从c应用程序中插入?我不知道您的评论是什么意思,这里的问题完全在SQL中,而不是在参数中,您的SQL在字段列表中有一个tou_DATE表达式,这是不允许的,这就是Oracle抱怨的原因。为什么您甚至必须tou DATE?数据库中的
message_date
字段是什么类型的?是的,我必须这样做,我从c#中的XML中读取这些变量,如果没有该函数,查询将不会接受日期作为字符串。也许我应该早点说。请仔细查看您试图插入的字段,字段列表中似乎有一个
to\u DATE
表达式,这绝对是不正确的语法。它应该是
INSERT-INTO-table(fields)VALUES(VALUES)
,您有
INSERT-INTO-table(fields,TO-DATE(…)…)…
我应该在哪里指定oracle类型,而我正试图从c应用程序中插入?我不知道您的评论是什么意思,这里的问题完全在SQL中,而不是在参数中,您的SQL在字段列表中有一个tou_DATE表达式,这是不允许的,这就是Oracle抱怨的原因。为什么您甚至必须tou DATE?数据库中的
message_date
字段是什么类型的?是的,我必须这样做,我从c#中的XML中读取这些变量,如果没有该函数,查询将不会接受日期作为字符串。也许我应该早点说。您完全可以在VALUES子句中进行函数调用。@kfinity为什么我认为这是不可能的。我似乎记得在MySQL中,这是不可能实现的。您完全可以在VALUES子句中进行函数调用。@kfinity为什么我认为这是不可能的。我似乎记得在MySQL中,这是不可能实现的。好吧,但我觉得使用Oracle函数手动转换来自.NET的数据是不对的。也许您可以找到一种方法让驱动程序为您执行此操作,然后您可以在不调用函数的情况下绑定一个参数。好的,但我觉得您使用Oracle函数手动转换来自.NET的数据是错误的。也许您可以找到一种方法让驱动程序为您执行此操作,然后您可以只绑定一个参数而不调用函数。