python读取oracle函数返回值


Posted in Python onJuly 18, 2016

在oracle中创建一个函数,本来是想返回一个index table的,没有成功。想到文本也可以传输信息,就突然来了灵感,把返回值设置文本格式。
考虑到返回数据量可能会很大,varchar2类型长度吃紧,于是将返回值类型设置为clob。 
我是用scott用户的测试表emp,这个是函数定义情况:

create or replace function test_query_func(dept varchar2)
return clob
is
 type test_record is record
 (rec_empno emp.empno%type,
 rec_ename emp.ename%type,
 rec_job  emp.job%type,
 rec_sal  emp.sal%type);
 type test_query_arr is table of test_record index by binary_integer;
 cursor cur is select empno, ename, job, sal from emp where deptno = dept;
 test_query test_query_arr;
 i integer := 0;
 ss varchar2(200) := '';
 res clob := '[';
begin
 for c in cur loop
  i := i + 1;
  test_query(i) := c;
 end loop;
 for q in 1..test_query.count loop
  ss := '(''' || test_query(q).rec_empno || ''', ''' || test_query(q).rec_ename || ''', ''' || test_query(q).rec_job || ''', ''' || test_query(q).rec_sal || ''')';
 if q < test_query.count then
 ss := ss || ',';
 end if;
 res := res || ss;
 end loop;
 res := res || ']';
 return res;
end;

可以在pl/sql developer测试这个函数的返回值:

begin
 dbms_output.put_line(test_query_func('30'));
 end;

输出结果:
[('7499', 'ALLEN', 'SALESMAN', '1600'),('7521', 'WARD', 'SALESMAN', '1250'),('7654', 'MARTIN', 'SALESMAN', '1250'),('7698', 'BLAKE', 'MANAGER', '2850'),('7844', 'TURNER', 'SALESMAN', '1500'),('7900', 'JAMES', 'CLERK', '950')]
 其实已经定义成一个python中列表中包含元组子元素的样式。 
下面是python中的代码,用python连接oracle需要cx_Oracle库:

import cx_Oracle as ora;
con = ora.connect('scott/scott@oradb');
cur = con.cursor();
cur.execute('select test_query_func(30) from dual');
res = cur.fetchall()[0][0].read();
cur.close();
con.close();
data = eval(res);
import pandas as pd;
df = pd.DataFrame(data, columns = ['empno', 'ename', 'job', 'sal']);
print(df)

这样oracle中函数返回的长字符串值就转化为DataFrame对象了:

python读取oracle函数返回值

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之大话题小函数(2)
Oct 10 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
python:print格式化输出到文件的实例
May 14 Python
python批量获取html内body内容的实例
Jan 02 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python3+Pycharm+PyQt5环境搭建步骤图文详解
May 29 Python
python使用正则来处理各种匹配问题
Dec 22 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
django自带的权限管理Permission用法说明
May 13 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 Python
Python读取一个目录下所有目录和文件的方法
Jul 15 #Python
Python在线运行代码助手
Jul 15 #Python
python 实现网上商城,转账,存取款等功能的信用卡系统
Jul 15 #Python
python 性能提升的几种方法
Jul 15 #Python
浅谈Python 对象内存占用
Jul 15 #Python
python发送邮件功能实现代码
Jul 15 #Python
Python中列表和元组的使用方法和区别详解
Dec 30 #Python
You might like
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
php cookies中删除的一般赋值方法
2011/05/07 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
javascript 面向对象全新理练之原型继承
2009/12/03 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
nodejs redis 发布订阅机制封装实现方法及实例代码
2016/12/15 NodeJs
javascript内存分配原理实例分析
2017/04/10 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
2017/12/27 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
Python使用ftplib实现简易FTP客户端的方法
2015/06/03 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python中的二维数组实例(list与numpy.array)
2018/04/13 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
python和JavaScript哪个容易上手
2020/06/23 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
教师绩效工资方案
2014/02/01 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
环卫个人总结
2015/03/03 职场文书