浅谈Oracle函数返回Table集合

|字号订阅

在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必需 通过返回一个 REF CURSOR 或一个数据聚拢 来完成。REF CURSOR 的这种情况范围 于可以从查询中选择的数据,而所有聚拢 在可以返回前,必需 举办具体 化。 9i 通过引入Oracle函数中的管道化表函数更正了后一种情况。表函数是返回所有行的集(通常作为一个聚拢 )的函数,可以直接从 SQL 语句中举办查询,就好像 它是一个真正的数据库表一样。管道化表函数与之雷同,但是它像在构建时一样返回数据,而不是一次整个 返回。管道化表函数越发 有效 , 由于 数据可以尽也许快地返回。

管道化表函数必需 返回一个聚拢 。在函数中,PIPE ROW 语句被用来返回该聚拢 的单个元素,该函数必需 以一个空的 RETURN 语句收场 ,以表明它已经完成。一旦我们创建 了上述函数,我们就可以应用 TABLE 操纵 符从 SQL 查询中调用它,从而使Oracle函数返回Table聚拢 。

1.应用 自界说 范例

Linux系统管理
  
  
  1. /*Formattedon2010/02/2608:42(FormatterPlusv4.8.8)*/
  2. CREATEORREPLACETYPEobjempASOBJECT(
  3. maxsalNUMBER,
  4. minsalNUMBER
  5. );
  6. /*Formattedon2010/02/2608:43(FormatterPlusv4.8.8)*/
  7. CREATEORREPLACETYPEtabempASTABLEOFobjemp;
  8.  Linux认证

2.应用 Pipeline管道函数和Pipe row()

  
  
  1. CREATEORREPLACEFUNCTIONgetmaxminsalary(departmentNUMBER)
  2. RETURNtabempPIPELINED
  3. AS
  4. maximum_salaryNUMBER;
  5. minimum_salaryNUMBER;
  6. v_errorcodeNUMBER;
  7. v_errortextVARCHAR2(200);
  8. vobjemp;
  9. BEGIN
  10. FORmyrowIN(SELECTMAX(sal)m_sal,MIN(sal)min_sal
  11. FROMemp
  12. WHEREdeptno=departmnet)
  13. LOOP
  14. v:=objemp(myrow.m_sal,myrow.min_sal);
  15. PIPEROW(v);
  16. ENDLOOP;
  17. RETURN;
  18. EXCEPTION
  19. WHENOTHERS
  20. THEN
  21. v_errorcode:=SQLCODE;
  22. v_errortext:=SUBSTR(SQLERRM,1,200);
  23. INSERTINTOlog_table
  24. (code,MESSAGE,info
  25. )
  26. VALUES(v_errorcode,v_errortext,'getMaxMinSalary'
  27. );
  28. END;

3.应用 Table操纵 符

  
  
  1. SELECT*FROMTABLE(getMaxMinSalary(10));

以上是一个不错的Oracle函数返回Table聚拢 的实例,感乐趣 的读者可以试一试。

Linux系统管理

更多相关文章

  1. Linux-C语言函数手册
  2. Linux 下nice 函数用法提高一个进程的友善值
  3. 设置查看linux 造成程序Core dumped 的函数调用层次
  4. Linux进程通信之匿名管道
  5. 为什么函数在ELF中的其他共享库的长度信息?
  6. Linux内核中的container_of函数简要介绍
  7. Linux环境下注册函数的调用顺序
  8. linux线程函数中代替sleep的方法
  9. Linux进程间通信(二):信号集函数 sigemptyset()、sigprocmask()、si

随机推荐

  1. Linux性能优化(八)——网络测试工具
  2. Spring 中的事件机制,芳芳用过都说好~
  3. Swagger 自动生成 Dubbo 服务的接口文档,
  4. 介绍 Java 中的内存泄漏
  5. 诊断 Java.lang.OutOfMemoryError(OOM)
  6. 不想用 Swagger?可以试试这个神器!
  7. 测试领域,小白问题大集合(适合未入门和入
  8. Scala 与 Java 的交互操作
  9. Swagger(丝袜哥)3.0 官方 Starter 终于出了
  10. 到底要不要考研?