【问题标题】:Create a procedure with turbodbc使用 turbodbc 创建一个过程
【发布时间】:2020-06-18 22:53:31
【问题描述】:

我正在尝试使用 turbodbc 在 Teradata 上创建程序。 有我的示例代码:

from turbodbc import connect
con = connect(dsn="Teradata")
cur = con.cursor()
cur.execute("""
create procedure dev.test_procedure (
) sql security invoker 
begin 
    delete dev.test_table;
end;
""")

得到了这个错误:

DatabaseError: ODBC error
state: 42000
native error code: -3706
message: [Teradata][ODBC Teradata Driver][Teradata Database] Syntax error:
Invalid  SQL Statement.

但相同的代码在 Teradata SQL 助手中没有错误。怎么了?

【问题讨论】:

  • 也许在 Teradata 端使用 DBQL 来捕获实际不正确的 SQL 语句文本会为问题提供线索。

标签: python python-3.x teradata turbodbc


【解决方案1】:

可能的解决方案是使用 teradatasql。此示例工作正常:

import teradatasql
with teradatasql.connect(
    '{"host":"my_host","user":"my_user","password":"my_password"}'
) as con:
    with con.cursor() as cur:
        cur.execute("""
            create procedure dev.test_procedure (
            ) sql security invoker 
            begin 
                delete dev.test_table ; 
            end ; 
            """)

但是,如果有人知道 turbodbc 的解决方案,那就太好了。

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多