在 oracle 中找不到来自关键字的预期错误

From keyword not found where expected error in oracle

Select firstname as name, time as asof, salary as bal into temp employee
from people.person p
where p.id =1;

需要通过插入属于人员数据库的已创建 table 人员的值来创建临时 table 员工,但在预期的地方找不到关键字时出现错误

然后您将使用 CTAS(Create Table As Select),而不是无效的 INTO 子句;它用于不同的目的。

create table temp_employee as
  select firstname as name,
         time as asof,
         salary as bal
  from people.person p
  where p.id = 1;

根据您发布的评论,您可能需要考虑几个选项。

一个是创建一个永久 table(就像上面的例子所示)。如果你要重用它,那么 - 在你的过程中 - 首先删除它的内容(或截断 table 因为它更快),然后 re-populate 它:

delete from temp_employee;
-- or truncate table temp_employee;

insert into temp_employee
  select firstname, time, salary from people.person
  where id = 1;

另一种选择是创建 true 临时 table,例如

create global temporary table temp_employee
  (name     varchar2(30),
   time     date,
   bal      number
  )
on commit preserve rows;

每当你需要数据时,只需将其插入即可:

insert into temp_employee (name, time, bal)
select firstname as name,
       time as asof,
       salary as bal
from people.person p
where p.id = 1;

这样做,它的内容将只对您可见(其他任何人都看不到),而 table 的内容将在交易或会话期间保留(这取决于您如何创建它 - 请参阅on commit preserve/delete rows 子句)。

你应该做的是创建table,删除它,然后再次创建它,依此类推 - 在 Oracle 中,我们创建 table一次,多次使用。