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中optionParser模块的使用方法实例教程
Aug 29 Python
github配置使用指南
Nov 18 Python
python中的计时器timeit的使用方法
Oct 20 Python
python生成随机图形验证码详解
Nov 08 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
Python解决pip install时出现的Could not fetch URL问题
Aug 01 Python
如何在Django配置文件里配置session链接
Aug 06 Python
python程序中的线程操作 concurrent模块使用详解
Sep 23 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
Dec 25 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Python爬虫之爬取某文库文档数据
Apr 21 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
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
PHP 验证登陆类分享
2015/03/13 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000]
2020/04/06 PHP
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
jquery模拟多级复选框效果的简单实例
2016/06/08 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
Vue 中如何正确引入第三方模块的方法步骤
2019/05/05 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
python使用urlparse分析网址中域名的方法
2015/04/15 Python
详解python3中tkinter知识点
2018/06/21 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
产品促销活动策划书
2014/01/15 职场文书
竞选班长的演讲稿
2014/04/24 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
工作作风建设心得体会
2014/10/22 职场文书
大学生见习报告总结
2014/11/04 职场文书
酒会邀请函
2015/01/31 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
OpenCV-Python实现人脸美白算法的实例
2021/06/11 Python
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis