在 oracle 中插入查询显示错误 Missing Expression

Insert query in oracle showing error Missing Expression

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

我想插入 SNO 的最大值作为列值。但它显示 "Missing Expression Error"

我怎样才能做到这一点。

如有任何帮助,我们将不胜感激。

您需要用方括号将 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

中添加列名

至少有一些方法可以做到:

INSERT INTO ... VALUES 并在括号中嵌入 select 以便数据库对其求值:

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 中填充的列,则数据库会假定您按照它们在此 table 中创建的顺序为所有列输入值。

这会起作用:-

我已经检查了我的表它的工作原理,示例代码来理解:

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;