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

如何实现流水线函数_PIPELINED关键字与PIPE ROW应用

PIPE ROW 在 Oracle PL/SQL 中怎么写才不报错直接说结论:pipe row 只能在定义为 pipelined 的函数里用,且函数返回类型必须是已声明的集合类型(比如 table of number),不能是 ref cursor 或标量。常见错误现象:调用时抛 ORA-06553: PLS-382: expression is of wrong type,或者 ORA-06553: PLS-306: wrong number or types of arguments —— 大多因为返回类型没对上、忘了加 PIPELINED,或在普通函数里硬塞了 PIPE ROW。函数头必须显式写 RETURN ... PIPELINED,不能只在 body 里用 PIPE ROW返回集合类型需提前用 CREATE OR REPLACE TYPE 建好,不能用匿名嵌套表(如 RETURN SYS.ODCIVARCHAR2LIST 是特例,但不推荐依赖)PIPE ROW 每次只能传一个元素,类型必须和集合元素类型完全一致(包括精度、字符集、NULL 性)函数体内不能有 RETURN(除了最后的 END RETURN),否则会提前退出,后续 PIPE ROW 不执行示例(安全写法):CREATE OR REPLACE TYPE num_list AS TABLE OF NUMBER;CREATE OR REPLACE FUNCTION gen_nums(n IN NUMBER) RETURN num_list PIPELINED ISBEGIN FOR i IN 1..n LOOP PIPE ROW(i); -- 类型匹配:num_list 元素是 NUMBER,i 是 NUMBER END LOOP; RETURN; -- 必须有,但不带值END;为什么用 PIPELINED 而不是普通函数返回集合核心区别在执行模型:PIPELINED 函数是“边算边吐”,调用方(比如 SQL 查询)可以逐行消费结果;普通函数得等全部计算完、构造好整个集合再一次性返回,内存和延迟都高。典型使用场景:处理大结果集但下游只取前几行(SELECT * FROM TABLE(gen_nums(1000000)) WHERE ROWNUM ),或需要流式 join / filter 的 ETL 场景。非 pipelined 函数:Oracle 会把整个集合加载进 PGA,100 万行 NUMBER 可能占几十 MB 内存Pipelined 函数:每调一次 PIPE ROW,就向调用方送一行,PGA 压力恒定(常驻约 1–2 行缓冲)兼容性注意:10g+ 支持,但 9i 不支持;如果函数被物化视图引用,部分版本要求必须 DETERMINISTIC(而 pipelined 函数通常不满足)TABLE(gen_nums(...)) 在 SQL 里怎么避免 ORA-22905 错误ORA-22905: cannot access rows from a non-nested table item 是最常卡住人的点 —— 根本原因:你用了 TABLE(),但 Oracle 没法确认这个函数返回的是合法嵌套表类型。 Zeemo AI 一款专业的视频字幕制作和视频处理工具

http://www.jsqmd.com/news/648794/

相关文章:

  • Newton迭代法在Matlab中的实现与收敛性分析
  • JX-2R-01热敏打印机芯避坑指南:电源、发热与缺纸检测的5个常见问题
  • Luckfox Pico SDK环境搭建与镜像编译全流程指南
  • 读2025世界前沿技术发展报告43先进有机材料
  • Qwen-Ranker Pro效果展示:电商搜索‘无线充电器兼容iPhone’精准匹配
  • 精密电池电路中应加入断路开关
  • 算法训练营第三天| 209.长度最小的子数组
  • SQL快速查找分组记录数异常的分类_利用HAVING筛选
  • 国产DCU卡实战:手把手教你用Docker部署通义千问Qwen2.5-7B推理服务
  • Nano-Banana与Vue3前端开发结合实战
  • Ostrakon-VL-8B扩展应用:识别餐饮票据与自动化报销系统
  • Qwen3.5-9B人工智能原理教学工具:动态图解机器学习算法
  • Asian Beauty Z-Image Turbo高清案例:不同光照角度下东方人像皮肤漫反射一致性表现
  • YOLOv9目标检测实战:官方镜像快速部署与推理测试
  • 长尾样本F1值低于0.17?,从CLIP微调失效到Qwen-VL-2长尾鲁棒性增强的12步可复现调优流水线
  • GTE+SeqGPT双模型部署指南:GPU资源优化配置详解
  • 通信工程大三生的C语言进阶与考研备战之路
  • AnimateDiff文生视频快速上手:输入文字直接生成GIF,零门槛体验AI视频创作
  • 多模态语义评估引擎在Web应用中的集成与性能优化
  • 告别手动标注!用MedCLIP-SAM+BiomedCLIP实现医学图像的文本描述自动分割(附代码实战)
  • 2026新茶饮出海的关键一跃:用海外红人营销启动UGC飞轮
  • 2.17 sql条件筛选(WHERE、比较运算符、逻辑运算符、BETWEEN、IN、LIKE模糊查询、IS NULL)
  • BGE-Large-Zh与Vue.js前端集成:打造智能搜索界面
  • Alibaba DASD-4B Thinking 对话工具 MathType 公式编辑技巧与 LaTeX 转换助手
  • 5分钟搞定!造相-Z-Image文生图引擎RTX 4090本地部署保姆级教程
  • C#上位机跨平台avalonia随记
  • 万物识别-中文-通用领域:新手友好的图片识别入门指南
  • Qwen3-TTS VoiceDesign实战:3步生成多语言智能语音助手
  • 别再只盯着VLM了!用VLA(Vision-Language-Action)模型搞定自动驾驶的感知-决策-控制闭环
  • 3 《3D Gaussian Splatting: From Theory to Real-Time Implementation》第三级:压缩、轻量化与存储优化 (一)