【问题标题】:Teradata stored procedure with python使用python的Teradata存储过程
【发布时间】:2019-10-04 06:57:03
【问题描述】:

我正在尝试在 python 中调用 Teradata 存储过程。但它给出了以下错误。

    cursor = session.cursor()
    cursor.callproc("usr.RESULTSET", (teradata.InOutParam("today"),
                                     teradata.OutParam("p2")))
    output = cursor.fetchone()
    print(output)

错误

raise DatabaseError(i[2], u"[{}] {}".format(i[0], msg), i[0])
teradata.api.DatabaseError: (6, '[HY000] [Teradata][ODBC Teradata Driver] (6) Internal Error (Exception).')
INFO:teradata.udaexec: UdaExec exiting. (2019-05-17 10:02:13,350; udaexec.py:68)

【问题讨论】:

  • 内部异常错误...这 100% 对 Teradata 没有帮助。您是否可以直接在 sql 客户端中调用此 proc 而不会抛出错误?您是否能够通过您的 python 会话提交非过程 SQL 而不会导致 ODBC 驱动程序崩溃?

标签: python-3.x teradata


【解决方案1】:

我设法通过 bteq 文件执行查询,现在它给了我正确的结果集。不知道为什么我以前的方法失败了。 bteq 文件包含存储过程及其参数。

例如:stored_procedure.bteq

CALL dbname.UsrFail(arg1,arg2)

 rows = []
 with td.TeraSession(td_sys_name, td_cred) as session:
    results = session.execute(file="/tperf/stored_procedure.bteq")
    for result in results.fetchall():
        rows.append(result.values)

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 2012-07-26
    • 2020-02-23
    • 2016-12-11
    • 2020-08-04
    • 2015-02-14
    • 2015-07-16
    • 2020-09-25
    • 2011-08-31
    相关资源
    最近更新 更多