【发布时间】:2015-07-08 14:15:36
【问题描述】:
我正在处理 TSql 到 Plsql 的转换。 tsql中声明和使用了几个表变量,比如
DECLARE @table_var table( id_ int ......)
WHILE ...
begin
insert into @table_var select ...
...
select * from @table_var..
我认为在oracle中可以使用全局临时表,但是数据最多10k行。
在这种情况下,全局临时表的效率如何?
除了global temporary table和table types在Oracle中还有其他方法可以转换类似的sql查询吗?
Oracle 版本:oracle11g 或 oracle12c
【问题讨论】:
-
在Oracle 中很少需要临时表,而且您发现它只支持全局临时表,不支持本地临时表。要问自己的真正问题是您是否真的需要将数据保存在自己的结构中 - 除了稍后从中选择之外,您是否需要对
table_var做任何事情,您可以通过选择/加入您的初始改为选择?您可以改用模式级别的表类型,但它们也可能是矫枉过正。 sn-p 太小太模糊,无法真正说出您需要什么。 -
代码中有相同区域
table_var不能被select或join替代。我不明白schema-level table types instead but they might be overkill too......table type或temp table的数据大小为10k rows? -
这取决于为什么它不能被替换,你对那个变量做了什么,你使用了多少次,填充它的查询有多昂贵,等等. 你的问题现在真的太抽象了,除了同样抽象的答案*8-)
标签: oracle plsql oracle11g oracle12c