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的web框架中编写创建日志的程序的教程
Apr 30 Python
在Python中用keys()方法返回字典键的教程
May 21 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Python实现将HTML转换成doc格式文件的方法示例
Nov 20 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
对Python中gensim库word2vec的使用详解
May 08 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
python实现自动解数独小程序
Jan 21 Python
Python字符串大小写转换拼接删除空白
Sep 19 Python
Django 实现对已存在的model进行更改
Mar 28 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
python处理json数据文件
Apr 11 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
一周让你学会PHP 不错的学习资料
2009/02/06 PHP
WordPress中查询文章的循环Loop结构及用法分析
2015/12/17 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
jQuery 中的 DOM 操作
2016/04/26 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
Python构建网页爬虫原理分析
2017/12/19 Python
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
python的继承知识点总结
2018/12/10 Python
Python实现的大数据分析操作系统日志功能示例
2019/02/11 Python
python实现维吉尼亚算法
2019/03/20 Python
如何通过python画loss曲线的方法
2019/06/26 Python
css 省略号 css3让多余的字符串消失并附加省略号的实现代码
2013/02/07 HTML / CSS
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
酒店总经理欢迎词
2014/01/15 职场文书
继承公证书样本
2014/04/04 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
群众路线剖析材料
2014/09/30 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
质量负责人岗位职责
2015/02/15 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
Redis Lua脚本实现ip限流示例
2022/07/15 Redis