用python读取oracle函数返回值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用python读取oracle函数返回值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1990字,纯文字阅读大概需要3分钟。
内容图文
在oracle中创建一个函数,本来是想返回一个index table的,没有成功。想到文本也可以传输信息,就突然来了灵感,把返回值设置文本格式。
考虑到返回数据量可能会很大,varchar2类型长度吃紧,于是将返回值类型设置为clob。
我是用scott用户的测试表,这个是函数定义情况:
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中的代码:
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对象了:
empno | ename | job | sal | |
---|---|---|---|---|
0 | 7499 | ALLEN | SALESMAN | 1600 |
1 | 7521 | WARD | SALESMAN | 1250 |
2 | 7654 | MARTIN | SALESMAN | 1250 |
3 | 7698 | BLAKE | MANAGER | 2850 |
4 | 7844 | TURNER | SALESMAN | 1500 |
5 | 7900 | JAMES | CLERK | 950 |
本文出自 “kevan的技术手札” 博客,请务必保留此出处http://kevan.blog.51cto.com/7204808/1827178
原文:http://kevan.blog.51cto.com/7204808/1827178
内容总结
以上是互联网集市为您收集整理的用python读取oracle函数返回值全部内容,希望文章能够帮你解决用python读取oracle函数返回值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。