0

在 SQL Server 中,可以执行以下操作

declare @t as table(id int)

insert into @t values(1)
insert into @t values(2)

delete from @t where id=1

在没有创建物理表的情况下,Oracle 中是否存在等价的情况。现在,我曾经创建物理表来执行此操作并稍后删除。

我已经转到此链接如何在 Oracle 中创建临时表,但那是 2010 年,参考链接提到了 Oracle 8i。Oracle 10g 和 11g 仍然是这种情况吗?我访问过的另一个链接是在 Oracle SQL 中构建临时表

谢谢

4

3 回答 3

1

在大多数情况下,您不需要它。在 Oracle 中,当您需要临时表时,“您的设计是错误的”。不要试图将 MS SQL 模式改写成 Oracle 的确切措辞。在 MS SQL 中使用临时表的地方,您在 Oracle CTE(嵌套子查询、查询分解)CURSOR或某些 PL/SQL 构造中使用。

临时表不是您需要的。它只是您用来实现某些目标的工具。在 Oracle 中,您应该使用其他工具。

于 2013-12-02T11:07:04.030 回答
1

CREATE GLOBAL TEMPORARY TABLE admin_work_area (startdate DATE, enddate DATE, class CHAR(20)) ON COMMIT DELETE ROWS;

此语句创建一个特定于事务的临时表。有关详细信息,请使用以下链接:

http://docs.oracle.com/cd/B28359_01/server.111/b28310/tables003.htm#i1006400

于 2013-02-27T11:31:44.183 回答
0

使用关联数组:)

declare
type temp_rec is record(v integer);
type temp_table is table of temp_rev indexed by pls_integer;

my_temp_table temp_table;

begin
  -- Here you can do do your stuff :)
end
/
于 2013-12-02T10:14:29.473 回答