亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

cx_Oracle 獲取布爾返回值

cx_Oracle 獲取布爾返回值

繁星點點滴滴 2023-10-06 18:51:47
我一整天都在努力嘗試使用 cx_Oracle 從 PL/SQL 函數獲取布爾值。我看過一些帖子討論使用其他一些數據類型(如 char 或整數)來存儲返回值,但是當我嘗試使用此類解決方案時,我收到錯誤的數據類型錯誤。首先,讓我展示代碼。def lives_on_campus(self):  cursor = conn.cursor()  ret = cursor.callfunc('students_api.lives_on_campus', bool, [self.pidm])  return ret如果我使用 11.2.0.4 數據庫客戶端,則會出現以下錯誤。File "student-extracts.py", line 134, in <module>    if student.lives_on_campus():  File "student-extracts.py", line 58, in lives_on_campus    ret = cursor.callfunc('students_api.lives_on_campus', bool, [self.pidm])cx_Oracle.DatabaseError: DPI-1050: Oracle Client library is at version 11.2 but version 12.1 or higher is needed如果我使用 12.1.0.2 數據庫客戶端或更高版本,則會收到此錯誤。Traceback (most recent call last):  File "student-extracts.py", line 134, in <module>    if student.lives_on_campus():  File "student-extracts.py", line 58, in lives_on_campus    ret = cursor.callfunc('students_api.lives_on_campus', bool, [self.pidm])cx_Oracle.DatabaseError: ORA-03115: unsupported network datatype or representation基本上,無論我使用哪個版本的 SQL 客戶端,它都會出錯。現在,我知道如果數據庫版本是 12c R2,上面的代碼將會工作。不幸的是,我們的測試環境中只有該版本,并且 PROD 僅使用 11g 數據庫。有什么可以使該功能與 11g 數據庫一起使用嗎?必須有一個解決方法。
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

嘗試包裝匿名塊,例如:


with connection.cursor() as cursor:

  outVal = cursor.var(int)


  sql="""

  begin

    :outVal := sys.diutil.bool_to_int(students_api.lives_on_campus(:pidm));

  end;

  """


  cursor.execute(sql, outVal=outVal, pidm='123456')


  print(outVal.getvalue())


查看完整回答
反對 回復 2023-10-06
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號