在oracle中插入查询,显示错误缺少表达式

时间:2018-08-07 12:20:21

标签: database oracle insert-into

  

插入ASSET_MAIN_CATEGORIES值(从ASSET_MAIN_CATEGORIES中选择最大值(sno),   'PROD','AC HMU','AC_HMU','PRODUCT','99CS002','','NR','LKO',1);

我想插入SNO的最大值作为列值。却显示“缺少表达错误”

我如何实现这一目标。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

您需要将select max放在方括号中,因为这是一条SQL语句:

insert into ASSET_MAIN_CATEGORIES values((select max(sno) from ASSET_MAIN_CATEGORIES), 'PROD','AC HMU','AC_HMU','PRODUCT','99CS002','','NR','LKO',1);

如果遇到错误,建议在insert statement

中添加列名

答案 1 :(得分:1)

至少有这样做的方法:

插入到...值中,并在括号中嵌入选择,以便数据库对其进行评估:

insert into ASSET_MAIN_CATEGORIES values(
  (select max(sno) from ASSET_MAIN_CATEGORIES),
  'PROD','AC HMU','AC_HMU','PRODUCT','99CS002','','NR','LKO',1
);

INSERT INTO ... SELECT ,因为所有其他数据都是静态的:

insert into ASSET_MAIN_CATEGORIES
  select
    max(sno),
    'PROD','AC HMU','AC_HMU','PRODUCT','99CS002','','NR','LKO',1
  from ASSET_MAIN_CATEGORIES
;

请注意,如果您未指定要在ASSET_MAIN_CATEGORIES数据库中填充的列,则假定您正在按照在表中创建它们的顺序来提供所有这些列的值。

答案 2 :(得分:0)

这将起作用:-

我已经在我的桌子上检查了其工作情况,示例代码以了解:

insert into b(col1,col2) select 7,(select max(col2) from b)
  from dual;

您需要什么代码:-

 insert into ASSET_MAIN_CATEGORIES(col1,col2,....,col10) 
 select (select max(col2) from ASSET_MAIN_CATEGORIES), 'PROD','AC 
 HMU','AC_HMU','PRODUCT','99CS002','','NR','LKO',1)
 from dual;