【问题标题】:Oracle Error: 'ORA-00936: missing expression' in an INSERT statementOracle 错误:“ORA-00936:INSERT 语句中缺少表达式”
【发布时间】:2021-02-26 19:20:59
【问题描述】:

我见过很多其他人遇到过这样的问题,但没有人能帮助我解决我的问题。我收到一个错误

ORA-00936:缺少表达式

使用这个插入语句

INSERT INTO FINAL_N2_GAS (id, sdate, edate, room, advsr_nm, serial_num, prev_read, curr_read, pressure, order_id, account_num) 
VALUES (CONVERT(NUMBER, 1), TO_DATE(trunc('6/13/2020 12:00:00 AM'), 'MM/DD/YYYY'), TO_DATE(trunc('6/14/2020 12:00:00 AM'), 'MM/DD/YYYY'), '001C', 'Last, First', '00-A00-0000', '0', '221089', '2.13', '35', '100000-00000');

CREATE TABLE 语句以防万一

CREATE TABLE FINAL_N2_GAS 
(
    id          NUMBER(10) PRIMARY KEY,
    sdate       DATE NOT NULL,
    edate       DATE NOT NULL,
    room        VARCHAR(25),
    advsr_nm    VARCHAR(25),
    serial_num  VARCHAR(25),
    prev_read   VARCHAR(25),
    curr_read   VARCHAR(25),
    pressure    VARCHAR(15),
    order_id    VARCHAR(10),
    account_num VARCHAR(25)
);

我已经盯着这个太久了,另一双眼睛会很棒。

谢谢:)

【问题讨论】:

标签: sql oracle sql-insert


【解决方案1】:

Oracle 没有convert 函数。你可以cast(1 as number(10)),但这样做似乎没有任何意义。只需插入值 1。在将字符串传递给 to_date 之前,您在字符串上调用 trunc,这没有多大意义。这将强制将字符串隐式转换为日期,除非您更改会话的 nls_date_format 以匹配您指定的字符串格式,否则该日期将失败。您可能只想删除 trunc 并更改 to_date 上的格式掩码以匹配您指定的字符串格式。

所以你可能想要这样的东西,dbfiddle demo

INSERT INTO FINAL_N2_GAS (id, sdate, edate, 
                          room, advsr_nm, serial_num, prev_read, curr_read, pressure, 
                          order_id, account_num) 
  VALUES (1, TO_DATE('6/13/2020', 'MM/DD/YYYY'), TO_DATE('6/14/2020', 'MM/DD/YYYY'), 
          '001C', 'Last, First', '00-A00-0000', '0', '221089', '2.13', 
          '35', '100000-00000');

实际上,您似乎不太可能真的希望 prev_readcurr_readpressure 成为 varchar 列。您似乎可能想在某个时候对它们进行数学运算,在这种情况下,它们确实应该是数字。假设order_id是一个序列生成的数值,那么它也应该是一个数字。

【讨论】:

  • 非常感谢。将 id 转换为数字的原因是因为我收到了“无效数字”错误,但我想这可能是其他原因(很可能是日期)。至于 prev_read curr_readpressure ,我只显示它们,所以字符串更容易使用。
  • " 我只显示它们,因此字符串更易于使用。" - 表应该根据实际数据类型和关系设计,而不是直接映射到特定的查询或报告。您现在可能“只显示”它们,但是当需要将它们作为数字来操作时(这只是 "when" ,而不是 "if"),您会发现它们更难以处理和。出于显示目的处理 NUMBER 类型是微不足道的。处理数学字符串远不那么简单。
猜你喜欢
  • 1970-01-01
  • 2021-11-22
  • 2013-02-15
  • 2017-08-31
  • 1970-01-01
  • 2012-05-13
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多