如何在oracle脚本中执行临时表?
我尝试使用select * into #temp
,但它不起作用。请帮忙,因为我是oracle的新人。
select * into temp from
(SELECT
CASE WHEN Aaddress = '16' THEN 'A'
ELSE 'OTHERS'
END AS PRODUCT
FROM NAME
WHERE name.INACTIVE_CODE IN ('1', '2'))
答案 0 :(得分:0)
Oracle使用create table as
:
create table temp as
SELECT (CASE WHEN Aaddress = '16' THEN 'A' ELSE 'OTHERS' END) AS PRODUCT
FROM NAME
WHERE name.INACTIVE_CODE IN ('1', '2');
注意,如果Aaddress
或INACTIVE_CODE
是数字,那么用于比较的常量不应该有单引号。不要将数字与字符串进行比较。
在SQL Server中,#temp
是临时表,但temp
不是。在Oracle中,您需要显式声明一个临时表:
create global temporary table temp as
答案 1 :(得分:0)
Oracle中的临时表是预先创建的,因此在使用它们之前就已知该定义。
所以你可以做
client
但是每次运行查询时都不建议这样做。更典型的用法是指定一次定义:
create global temporary table temp on commit preserve rows as select ... from ...
然后使用INSERT根据需要填充表。默认情况下,即,根据我上面的后面的“创建”语句,在您提交的那一刻,行将丢失。如果要在提交后保留行,请按照我的第一个示例添加“on commit preserve rows”。 在create-table-as-select方案中执行此操作的原因是,否则将创建表,填充行,然后在命令完成时立即清空。