python 调用oracle存储过程,python调用oracle存储过程,读取返回的游标

存储过程代码

CREATE OR REPLACE Procedure dw_all.test_procedure

-- 外部输入参数

(

v_name In varchar,

r_result out sys_refcursor

) As

v_sql varchar2(1000);

Begin

-- 存储过程中两个单引号转义为一个单引号,见下面的where条件

v_sql := 'select a,b from dw_all.test where a='''||v_name||'''';

-- 使用open将结果存入游标返回出去

OPEN r_result FOR v_sql;

Exception

When Others Then

Dbms_Output.Put_Line('出错!');

End;

python代码

import cx_Oracle

import pandas as pd

conn = cx_Oracle.connect('dw_all/A1***23@172.*.*.200/gb')

cur = conn.cursor()

i_cur = cur.var(cx_Oracle.CURSOR)

#第一个是存储过程名称,列表中为按顺序排列的参数

results = cur.callproc('dw_all.test_procedure',['b',i_cur])

l_results = results[1]

cols=[x[0] for x in l_results.description]

rs=pd.DataFrame(list(l_results),columns=cols)

conn.close()

#游标内容,注意游标遍历一次后就是空的了

list(l_results)

#游标内容的字段

[x[0] for x in l_results.description]

--------------------------------------------

存储过程源表数据

AB

a1

a2

b1

b2

b3

存储过程结果数据

A B

0 b 1

1 b 2

2 b 3

标签:存储,cur,python,游标,results,--,oracle,dw

来源: https://blog.csdn.net/u013760453/article/details/113662888

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值