簡體   English   中英

Python cx_Oracle 無法使用存儲過程在 Oracle 11g 數據庫中插入 XMLType

[英]Python cx_Oracle unable to insert XMLType in Oracle 11g database using a stored procedure

我正在嘗試調用 Python 中的存儲過程來插入 XML 數據,但它不起作用:(

這是詳細信息-

create or replace procedure t(a in XMLType, b out number) as
begin
  b := 5;
end;
/

代碼是 -

xmlData = """<?xml version="1.0"?>
        <customer>
            <name>John Smith</name>
            <Age>43</Age>
            <Designation>Professor</Designation>
            <Subject>Mathematics</Subject>
        </customer>"""
xmlval=cx_Oracle.CLOB
xmlval = xmlData
try:
  
    r=c.var(cx_Oracle.NUMBER)
    c.callproc("T", [xmlval,r])
    print("Result = ",r.getvalue(pos=0))
 
    c.close()
except cx_Oracle.DatabaseError as ex:
    err, =ex.args
    print("Error code    = ",err.code)
    print("Error Message = ",err.message)
    os._exit(1)

所以這實際上不是一個答案,但我無法發表評論,因為我沒有 50 聲望。

但您可以嘗試像這樣設置 xmlval 的價值:

xmlval=cx_Oracle.CLOB
xmlval.setvalue(0, xmlData)

您可以將其作為 CLOB 傳遞給包裝器 function 或匿名 PL/SQL 塊,例如:

c.execute("begin t(sys.xmltype(:xmlval),:r); end;", [xmlval,r])

cx_Oracle 手冊中有一些關於綁定有關 XMLType 的 LOB 的背景知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM