首页 > 解决方案 > 如何在 TYPE Oracle 中动态创建列

问题描述

Oracle 中 TYPE 对象中的某些列需要动态创建。请让我知道我该如何实现它。 l_row --> TYPE, sql_stmt--> is contain the Query

以下是包中查询的部分。

        OPEN p_rc FOR sql_stmt;       
        LOOP            
        FETCH p_rc INTO l_row;      

        PIPE ROW(l_row);            
        EXIT WHEN p_rc%NOTFOUND;           
        END LOOP;

下面是类型结构

 TYPE test_service IS RECORD ( 
    column1                    VARCHAR2(3),   
    column2                   VARCHAR2(6),   
    column3                   VARCHAR2(1000),   
    column4                   VARCHAR2(1000),     
    Column5                   VARCHAR2(1000)

  );

   TYPE test_service_result IS TABLE OF test_service;

在此column3,,,需要动态添加 column4column5

请找到 sqlstmt 的某些部分。

MERGEDATA, VALUESERVICE 来自 REP_GTT_DATA ' || V_WHERE_CLAUSE ||' )PIVOT(MAX(MERGEDATA) FOR VALUESERVICE IN('|| pivot_clause || '))';

MergeData--> 是一些值,ValueService--> 现在成为 Mergedata 值的列(即 3、4、5 列等)。

如果假设未从查询中获取 Column5 (ValueService) 值,则得到 Exception.ie 01007. 00000 - "variable not in select list"。由于这个原因,我不能在开头指定列名声明,所以从 3、4、5 列等应该根据 (ValueService) 值动态创建。请建议我如何实现它。

标签: sqloracleplsqlpivotuser-defined-types

解决方案


推荐阅读