【问题标题】:Tsql table variable to Oracle PLSqlSql 表变量到 Oracle PL Sql
【发布时间】: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 tabletable types在Oracle中还有其他方法可以转换类似的sql查询吗?

Oracle 版本:oracle11goracle12c

【问题讨论】:

  • 在Oracle 中很少需要临时表,而且您发现它只支持全局临时表,不支持本地临时表。要问自己的真正问题是您是否真的需要将数据保存在自己的结构中 - 除了稍后从中选择之外,您是否需要对 table_var 做任何事情,您可以通过选择/加入您的初始改为选择?您可以改用模式级别的表类型,但它们也可能是矫枉过正。 sn-p 太小太模糊,无法真正说出您需要什么。
  • 代码中有相同区域table_var不能被selectjoin替代。我不明白schema-level table types instead but they might be overkill too......table typetemp table 的数据大小为10k rows
  • 这取决于为什么它不能被替换,你对那个变量做了什么,你使用了多少次,填充它的查询有多昂贵,等等. 你的问题现在真的太抽象了,除了同样抽象的答案*8-)

标签: oracle plsql oracle11g oracle12c


【解决方案1】:

根据你想要实现的数据和任务的大小——你可以使用

  1. pl/sql记录/表和批量处理
  2. 将数据保存到光标中并循环遍历它
  3. 如果你想要某种查询更新——你可以使用内联视图 (保留主键)

【讨论】:

  • table typetemp table 对于 10k 行的数据大小?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
相关资源
最近更新 更多