sql - 如何在 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
,,,需要动态添加 column4
。column5
请找到 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) 值动态创建。请建议我如何实现它。
解决方案
推荐阅读
- javascript - 为什么这段代码必须使用 Math.min.apply 而不仅仅是 Math.min
- office-addins - 在 Office 插件清单中需要 ExcelAPI
- javascript - 如何在 JavaScript 中编写更干净的嵌套条件
- python - Django - Excel 计算方法值的总和
- java - ImageView 在 DialogFragment 中不可点击
- freemarker - 范围报告第二次失败。无法在小项目中重现
- wicket - 使用 Wicket 处理会话超时
- loops - 每次在 Ansible playbook 中运行具有不同参数的命令
- javascript - 如何使用javascript获取上一个和下一个兄弟ID
- python - 在 DataFrame 中标记品牌关键字