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_read
、curr_read
或 pressure
之类的东西成为 varchar
列。很可能你想在某个时候对它们进行数学运算,在这种情况下它们确实应该是数字。假设order_id
是一个序列生成的数值,它也应该是一个数字。
我见过很多人遇到这样的问题,但是 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_read
、curr_read
或 pressure
之类的东西成为 varchar
列。很可能你想在某个时候对它们进行数学运算,在这种情况下它们确实应该是数字。假设order_id
是一个序列生成的数值,它也应该是一个数字。