oracle自定义函数返回结果集
首先要弄两个type,不知道什么鬼:
1.
- create or replace type obj_table as object
- (
- id varchar2(38),
- name varchar2(4000),
- count varchar2(10)
- )
2.
- create or replace type t_table is table of obj_table
函数体:
- create or replace function getStationListTb(s number)
- return t_table
- as
- rs t_table:= t_table();
- str varchar2(4000);
- i number := 0;
- begin
- for c in (select DepartmentId from sys_department) loop
- str := '';
- i := 0;
- for c2 in (select t2.name from sys_departmentstation t1
- left join bsd_station t2 on t1.stationid=t2.stationid where t1.DepartmentId=c.departmentid) loop
- str := str || '<span class="btn btn-defaut select-btn select-site-wrap" title="' || c2.name || '">' || c2.name || '</span>';
- i := i + 1;
- end loop;
- str := substr(str,0,length(str)-1);
- rs.extend;
- rs(rs.count) := obj_table(c.departmentid,str,to_char(i));
- end loop;
- return rs;
- end getStationListTb;
好奇怪的,这个函数我不定义参数它就出错,稍微哪里写错一点东西,就报错,又没提示哪里错,感觉好难写的;这次难得写成功了,赶紧记录下来,下次直接过来copy。
调用:
- select * from table(getStationListTb(1))
那么,这个函数出来就是一张表了,可以把它看成表去使用:
- SELECT t1.*,t2.name StationList,t2.count StationCount FROM SYS_Department t1
- left join (select * from table(getStationListTb(1))) t2 on t1.DepartmentId=t2.id
- WHERE 1=1
先前还写了个按照ID去获取每行数据的:
- create or replace function getStationList(DepartmentId VARCHAR2) return VARCHAR2
- as
- --定义变量
- resultStr VARCHAR2(8000);
- begin
- for c in (select stationid
- from sys_departmentstation
- where DepartmentId=DepartmentId) loop
- resultStr := resultStr || c.stationid || ',';
- end loop;
- return substr(resultStr,0,length(resultStr)-1);
- end getStationList;
想这样直接根据ID关联数据:
- SELECT t1.*,getStationList(t1.DepartmentId) StationList FROM SYS_Department t1
结果出来呵呵的,完全不像sql那样会根据每行的DepartmentId去传参执行getStationList(DepartmentId VARCHAR2)函数,而是一直使用第一行的DepartmentId进行传参:
呵呵。
oracle自定义函数返回结果集的更多相关文章
- Mybatis下配置调用Oracle自定义函数返回的游标结果集
在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper names ...
- oracle函数返回结果集
一.用自定义类型实现 1.创建表对象类型. 在Oracle中想要返回表对象,必须自定义一个表类型,如下所示: create or replace type type_table is table of ...
- oracle调用存储过程和函数返回结果集
在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...
- PB中用oracle的存储过程返回记录集做数据源来生成数据窗口,PB会找不到此存储过程及不能正常识别存储过程的参数问题(转)
(转)在PB中用oracle的存储过程返回记录集做数据源来生成数据窗口 首先oracle的存储过程写法与MSSQL不一样,差别比较大. 如果是返回数据集的存储过程则需要利用oracle的包来定义游标. ...
- 【转】Oracle 自定义函数语法与实例
原文地址:https://blog.csdn.net/libertine1993/article/details/47264211 Oracle自定义函数的语法如下: create or replac ...
- Oracle自定义函数和存储过程示例,自定义函数与存储过程区别
参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...
- PHP自定义函数返回多个值
PHP自定义函数只允许用return语句返回一个值,当return执行以后,整个函数的运行就会终止. 有时要求函数返回多个值时,用return是不可以把值一个接一个地输出的. return语句可以返回 ...
- Oracle自定义函数1
用户定义函数是存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样,如max(value)函数,其中,value被称为参数.函数参数有3种类型. IN 参数类型:表示输入给函数的参数 ...
- Oracle自定义函数
核心提示:函数用于返回特定数据.执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1] da ...
随机推荐
- Linux下TFTP服务的安装、配置和操作
TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp ...
- MySQL 用户连接与用户线程
本文转载自公众号数据库随笔,作者happypig 微信看起来麻烦 pig已经好长一段时间没有分享文章了,有点对不起订阅的朋友.最近在做比较复杂跟困难的事情,也并不一定最终会有成果,因此必须对此沉默. ...
- 【转载】Spring Cloud全家桶主要组件及简要介绍
https://blog.csdn.net/xlgen157387/article/details/77773908
- Eclipse ee项目 Java Resources文件报错解决方法
通常是JDK版本配置问题,这里使用的是JDK1.8版本 确保jre版本为本机配置的版本 打开Navigator目录的.settings文件夹修改org.eclipse.wst.common.compo ...
- 面向对象编程其实很简单--python面向对象(初级篇)
出处:http://www.cnblogs.com/wupeiqi/ 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函 ...
- 仿XP系统的任务栏菜单
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 何在mysql查找效率慢的SQL语句?
如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启 ...
- 解决ubuntu下firefox的flash全屏后不能恢复问题 ZT
sudo mkdir /etc/adobe echo "OverrideGPUValidation=true" >~/mms.cfg sudo mv ~/mms.cfg /e ...
- HTML和CSS标签常用命名规则
1.Images 存放一些网站常用的图片: 2.Css 存放一些CSS文件: 3.Flash 存放一些Flash文件: 4.PSD 存放一些PSD源文件: 5.Temp 存放所有临时图片和其它文件: ...
- 使用flask框架实现web页面与数据库数据互联+常见的几种状态码
1.通过cygwin从pip install两个包:PyMySQL.SQLAlchemy: 2.在app.py中import我们要用到的库中的包:create_engine,text :from sq ...