繁体   English   中英

如何使用cx_Oracle在Python 3.4中调用Oracle API函数?

[英]How do I call an Oracle API function in Python 3.4 using cx_Oracle?

Oracle和Python的新功能。 我在Oracle数据库中有一个具有Part_Exist函数的API,该函数检查部件是否存在,并为true返回1,为false返回0:

FUNCTION Part_Exist (
   contract_        IN  VARCHAR2,
   part_no_         IN  VARCHAR2 ) RETURN NUMBER
IS
BEGIN
   IF Check_Exist___(contract_, part_no_) THEN
      RETURN 1;
   ELSE
      RETURN 0;
   END IF;
END Part_Exist;

然后,我尝试使用cx_Oracle连接游标在Python中执行此功能:

cursor.execute('INVENTORY_PART_API.PART_EXIST', ['100', '05945'])

我之前曾尝试过cursor.callproc ,但是由于这是一个函数而不是过程,所以我认为cursor.execute将是正确的。

我不断得到这个追溯:

cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number

我尝试过各种格式的输入,但是没有运气。 我之前使用cursor.callproc了不错的效果。 输入赞赏!

在这里找到答案: http : //dbaportal.eu/sidekicks/sidekick-cx_oracle-code-paterns/

基本上我必须使用cursor.callfunc而不是.execute.callproc ...

        return_no = cursor.var(cx_Oracle.NUMBER)
        cursor.callfunc('INVENTORY_PART_API.Part_Exist', return_no, ['100', '05945'])
        number = return_no.getvalue()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM