当前位置: 首页 > news >正文

【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写

本文内容来自YashanDB官网,原文内容请见 https://www.yashandb.com/newsinfo/7802940.html?templateId=1718516
【问题分类】功能使用

【关键字】pipelined

【问题描述】

Oracle PL/SQL中包含pipelined函数的对象迁移到YashanDB会出现不兼容现象。

【问题原因分析】

Pipelined函数是一种特殊的表函数,以流方式返回结果,这样可以边处理数据边返回结果,提高性能。嵌套表是一组同类型的元素的集合,适用于存储分组结果或批量处理数据时,可以在 PL/SQL 中遍历和操作这些数据。YashanDB 不支持pipelined函数,若遇到pipelined函数,可以使用嵌套表来改写。

【解决/规避方法】

--Oracle 示例函数CREATE OR REPLACE TYPE "T_RET_TABLE" IS TABLE OF VARCHAR2 (4000)/CREATE OR REPLACE FUNCTION "ROW_SPLIT" (var_str in string, var_split In String)return t_ret_tablePIPELINED asvar_tmp clob;var_element clob;n_length Number := length(var_split);beginvar_tmp := var_str;while instr(var_tmp, var_split) > 0 loopvar_element := substr(var_tmp, 1, instr(var_tmp, var_split) - 1);var_tmp := substr(var_tmp,instr(var_tmp, var_split) + n_length,length(var_tmp));pipe row(var_element);end loop;pipe row(var_tmp);return;end row_split;/--YashanDB 改写参考CREATE OR REPLACE TYPE "T_RET_TABLE" IS TABLE OF VARCHAR2 (4000)/CREATE OR REPLACE FUNCTION "ROW_SPLIT" (var_str in varchar, var_split In varchar)return t_ret_table ISvar_trt t_ret_table;var_tmp varchar2(8000);var_element varchar2(8000);n_length Number := length(var_split);beginvar_trt := t_ret_table();var_tmp := var_str;while instr(var_tmp, var_split) > 0 loopvar_element := substr(var_tmp, 1, instr(var_tmp, var_split) - 1);var_tmp := substr(var_tmp,instr(var_tmp, var_split) + n_length,length(var_tmp));var_trt.extend(1);var_trt(var_trt.COUNT) := var_element;end loop;var_trt.extend(1);var_trt(var_trt.COUNT) := var_tmp;return var_trt;end row_split;/

【影响范围】23.2.10.100及以下版本

【修复版本】23.2.10.100

http://www.lryc.cn/news/508374.html

相关文章:

  • 【开发实战】QT5+ 工业相机 + OpenCV工作流集成演示
  • 各种电机原理介绍
  • 深入了解 React:从入门到高级应用
  • Cglib代理简单案例
  • FreeMarker语法
  • DP动态规划(装箱问题)
  • 内网IP段介绍与汇总
  • 三、ubuntu18.04安装docker
  • 数据库与表空间
  • 【CSS in Depth 2 精译_091】15.4:让 CSS 高度值过渡到自动高度 + 15.5:自定义属性的过渡设置(全新)+ 15.6:本章小结
  • Oracle中间件 SOA之 OSB 12C服务器环境搭建
  • Java设计模式 —— 【结构型模式】外观模式详解
  • 线性表实验
  • 003无重复字符的最长子串
  • 记录--uniapp 安卓端实现录音功能,保存为amr/mp3文件
  • 前端生成docx文档、excel表格、图片、pdf文件
  • c++---------流类
  • 3、基本复用原理和复用单元
  • Vue与React:前端框架的巅峰对决
  • Java 中的面向对象编程 (OOP) 概念
  • 十二月第20讲:Python中指数概率分布函数的绘图详解
  • 汽车IVI中控开发入门及进阶(44):杰发科智能座舱芯片
  • 【py脚本+logstash+es实现自动化检测工具】
  • Zookeeper的选举机制
  • 2024-05-18 前端模块化开发——ESModule模块化
  • Linux IPV6 地址配置 | IPv6 禁用 | ping6 过程细节剖析 | IPv6 排障
  • 【YashanDB知识库】XMLAGG方法的兼容
  • echarts加载区域地图,并标注点
  • echarts画风向杆
  • 【LeetCode每日一题】LeetCode 345.反转字符串中的元音字母