【问题标题】:Oracle Stored Procedure and PyODBCOracle 存储过程和 PyODBC
【发布时间】:2013-05-29 02:18:20
【问题描述】:

我在让 PyODBC 与 Oracle 中的 proc 一起工作时遇到了一些麻烦。

下面是代码和输出

db = pyodbc.connect('DSN=TEST;UID=cantsay;PWD=cantsay')

print('-' * 20)
try:
    c = db.cursor()
    rs = c.execute("select * from v$version where banner like 'Oracle%'")
    for txt in c.fetchall():
        print('%s' % (txt[0]))
    test = ""
    row = c.execute("call DKB_test.TESTPROC('7894','789465','789465')").fetchall()
finally:
    db.close()

输出

>    C:\Documents and Settings\dex\Desktop>orctest.py
> -------------------- Oracle Database 10g Release 10.2.0.4.0 - 64bit Production Traceback (most recent call last):   File "C:\Documents and
> Settings\dex\Desktop\orctest.py", line 31, in <module>
>     row = c.execute("{call DKB_test.TESTPROC(12354,78946,123 4)}").fetchall()
> pyodbc.Error: ('HY000', "[HY000] [Oracle][ODBC][Ora]ORA-06550: line 1,
> column 7: \nPLS-00221: 'TESTPROC' is not a procedure
> or is undefined\nORA- 06550: line 1, column 7:\nPL/SQL: Statement
> ignored\n (6550) (SQLExecDirectW)")

但是我可以看到这个过程并用 c# 编码它可以工作,但是我正在做的这个项目现在需要 python。

我在 Google 上进行了一些搜索,但没有任何结果对我有帮助。

任何事情都将不胜感激。

【问题讨论】:

    标签: python oracle pyodbc


    【解决方案1】:

    不是 100% 确定,过程名称是 Get_SC_From_Comp_Ven_Job 还是 GET_SC_FROM_COMP_VEN_JOB?

    1. 检查用户空间是否正确。
    2. 检查名称是否区分大小写,如果我们创建过程Get_SC_From_Comp_Ven_Job,实际上它是GET_SC_FROM_COMP_VEN_JOB。但是如果我们创建过程“Get_SC_From_Comp_Ven_Job”,那么它就是

    【讨论】:

    • 好吧,我更改了上限,现在出现了一个新错误。 pyodbc.Error: ('HY000', "[HY000] [Oracle][ODBC][Ora]ORA-06550: 第 1 行,第 7 列:\nPLS-00221: 'TEST' 不是过程或未定义\nORA- 06550:第 1 行,第 7 列:\nPL/SQL:语句被忽略\n (6550) (SQLExecDirectW)")
    • @thedemon,至少有进步:-)。什么是测试?无法在您的代码中找到它。
    • 对不起,这只是该程序的通用程序。关于我还有什么做错的任何想法?
    • 我的意思是消息:PLS-00221: 'TEST' is not a procedure or is undefined, 一定有某处引用 TEST 在过程中,但在您发布的代码中,找不到引用的 TEST任何地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多