python 的 Teradata 存储过程

Teradata stored procedure with python

我正在尝试调用 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)

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

例如:stored_procedure.bteq

调用 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)