在 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一次,多次使用。
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一次,多次使用。