【问题标题】:How to insert data into a temporary table from a cursor returned by a stored procedure如何从存储过程返回的游标将数据插入临时表
【发布时间】:2019-06-05 23:23:20
【问题描述】:

我正在使用 Oracle 11g,并且我有一个存储过程,可以选择一些数据并将其放入要返回的游标中。我需要将该游标中的数据插入到临时表中,但我不知道如何。希望你能帮助我。

这是我尝试过的方式(它在 SQL Server 中的工作原理):

INSERT INTO tt_IDIOMALISTAS(Idtt, CampoOriginal, CampoModificado, Estado) VALUES sp_SearchSelect(v_CY,v_Idioma,v_SubModule);

这是 SP 内的光标:

open v_refcur for SELECT
   SPD.Id_CombosPorDefecto, SPD.vrc_NombreCombos1, S.vrc_Idioma1, S.vrc_Idioma2, S.vrc_Idioma3
   FROM tbl_Adm_CombosPorDefecto SPD
   LEFT JOIN  tbl_Adm_Combos S
   ON SPD.Id_CombosPorDefecto = S.int_IdComboPorDefecto
   WHERE SPD.int_IdSubModulo = v_SubModule
   AND SPD.FK_CY = v_CY;

【问题讨论】:

  • 为什么不干脆做insert into yourtable(columns) select columns from tablename
  • 一开始就使用光标是一个糟糕的选择。对于 Oracle SQL Server。

标签: oracle plsql oracle11g


【解决方案1】:

SQL(插入脚本)在性能方面优于 PL/SQL & SQL(光标和插入脚本)。

INSERT INTO tt_idiomalistas
    SELECT spd.id_combospordefecto
           , spd.vrc_nombrecombos1
           , s.vrc_idioma1
           , s.vrc_idioma2
           , s.vrc_idioma3
      FROM tbl_adm_combospordefecto spd
      LEFT JOIN tbl_adm_combos s ON spd.id_combospordefecto = s.int_idcombopordefecto
     WHERE spd.int_idsubmodulo = v_submodule
       AND spd.fk_cy = v_cy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-24
    • 2017-11-18
    • 2010-11-29
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    相关资源
    最近更新 更多