Oracle Error: 'ORA-00936: missing expression' in an INSERT statement

Oracle Error: 'ORA-00936: missing expression' in an INSERT statement

我见过很多人遇到这样的问题,但是 none 帮我解决了我的问题。我收到一个错误

ORA-00936: missing expression

使用这个插入语句

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

我已经盯着这个看太久了,再配一双眼睛就好了。

谢谢:)

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是一个序列生成的数值,它也应该是一个数字。