首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换硬编码-使用动态sql

转换硬编码-使用动态sql
EN

Stack Overflow用户
提问于 2018-09-26 23:02:34
回答 1查看 129关注 0票数 1

以下是我使用11G的大容量装载能力的过程。如何将其转换为使用动态SQL,这样就不必硬编码源表和目标表。

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE Ld_Partition_Tbl 
(p_array_size IN PLS_INTEGER DEFAULT 10000) IS

TYPE ARRAY IS TABLE OF *SourceTableName*%ROWTYPE;
l_data ARRAY;

CURSOR c IS SELECT * FROM *SourceTableName*;

BEGIN

  OPEN c;
    LOOP
      FETCH c BULK COLLECT INTO l_data LIMIT p_array_size;

      FORALL i IN 1..l_data.COUNT
      INSERT INTO *TargetTableName* VALUES l_data(i);

      EXIT WHEN c%NOTFOUND;
    END LOOP;
  CLOSE c;

END Ld_Partition_Tbl;

我需要用参数替换SourceTableName和TargetTableName,但需要使用动态SQL。

EN

回答 1

Stack Overflow用户

发布于 2018-09-27 06:37:34

根据您所提供的,您可以简单地运行这个程序。您不需要将数据存储在中间变量l_data中。

代码语言:javascript
复制
EXECUTE IMMEDIATE 'INSERT INTO ' ||*TargetTableName*||' SELECT * FROM ' ||*SourceTableName*;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52527145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档