2013-09-30 5 views
3

파이썬 스크립트에서 2 in 및 1 out 매개 변수로 oracle 저장 프로 시저를 호출하려고합니다. 내가 겪고있는 문제는 커서를 매개 변수로 전달하는 것입니다.파이썬 스크립트에서 커서 출력 매개 변수로 oracle 저장 프로 시저 호출

오라클 저장 프로 시저는 본질적으로 :

#! /usr/bin/python 

    import cx_Oracle 

    lac='11508' 
    ci='9312' 

    try: 
     my_connection=cx_Oracle.Connection('login/[email protected]_name') 
    except cx_Oracle.DatabaseError,info: 
     print "Logon Error:",info 
     sys.exit() 

    my_cursor=my_connection.cursor() 
    cur_var=my_cursor.var(cx_Oracle.CURSOR) 

    my_cursor.callproc("cgi_info.ci_lac_state", [lac, ci, cur_var]) 

    print cur_var.getvalue() 

그리고 결과 등 커서 값을 얻을 :

PROCEDURE ci_lac_state 
    (LAC_ID_IN IN VARCHAR2, 
     CI_ID_IN IN VARCHAR2 DEFAULT NULL, 
     CGI_ID OUT SYS_REFCURSOR) 
    AS 
    BEGIN 
     OPEN cgi_id FOR 
     ... 
    END; 

데이터베이스에 호출 파이썬 코드는

<__builtin__.OracleCursor on <cx_Oracle.Connection to [email protected]_name>> 

내가 뭘 잘못하고 있니?

감사합니다.

+0

'print cur_var.getvalue (pos = 0)'를 시도 했습니까? 또는 CGI_ID –

+0

인 [curthout 매개 변수에 전달하는 파이썬 - 오라클] 복제본 인 cur_var를 검색해야하는 경우 pos = 2 일 수 있습니다 (http://stackoverflow.com/questions/6821372/python-oracle-passing-in -a-cursor-out-parameter) – ThinkJet

+0

FoxMaSk에게. 예. 나는이 "print cur_var.getvalue (pos = 0)"을 시도했지만, "<@ 내장 Oracle __에서 OracleCursor를 >"같은 결과를 얻습니다. "pos = 2"는 새로운 오류로 이어집니다 : print cur_var.getvalue (pos = 1) IndexError : Variable_GetSingleValue : 배열 크기 초과 – user2831245

답변

1

방금 ​​비슷한 문제가있었습니다. cur_var<type 'cx_Oracle.CURSOR'> 유형이고 cur_var.getvalue() 유형은 <type 'OracleCursor'> 유형의 객체를 가져옵니다. 데이터를 가져 오려면 OracleCursor 객체에서 가져온 데이터를 가져와야합니다. 예를 들어보십시오 :

print cur_var.getvalue().fetchall() 

OracleCursor 개체의 많은 기능을 보려면 다만 그 디렉토리를 확인합니다

dir(cur_var.getvalue()) 

희망이 당신을 도울 것입니다!

+0

고마워요. 저에게 도움이되었습니다. –