【问题标题】:"Invalid cursor state" error with odbc load commandodbc load 命令出现“无效游标状态”错误
【发布时间】:2016-06-25 16:06:36
【问题描述】:

这个神秘的错误是什么意思?

> odbc load, exec("
> CREATE VOLATILE MULTISET TABLE vol_tab AS (
>         SELECT TOP 10 user_id FROM dw_users
> )
> WITH DATA
> PRIMARY INDEX(user_id)
> ON COMMIT PRESERVE ROWS;
> ") clear dsn("mozart");
The ODBC driver reported the following diagnostics
[Teradata][ODBC Teradata Driver] Invalid cursor state.
SQLSTATE=24000
r(693);

【问题讨论】:

  • 我经常收到这个问题,所以我决定为后代创建一个很好的 googleable 答案。

标签: odbc stata


【解决方案1】:

您收到此错误是因为您告诉 Stata 加载某些内容,但您的代码没有不属于表创建一部分的 SELECT 子句。如果在底部添加SELECT 子句,它将起作用。

或者,如果您只想创建一个表,也可以使用odbc exec("SqlStmt") 语法。

这是一个例子:

/* Works */
odbc load, exec("
CREATE VOLATILE MULTISET TABLE vol_tab AS (
    SELECT TOP 10 user_id FROM dw_users
)
WITH DATA
PRIMARY INDEX(user_id)
ON COMMIT PRESERVE ROWS;

SELECT * FROM vol_tab;
") clear dsn("mozart") lowercase multistatement;
format user_id %20.0fc;
sort user_id;
list, clean noobs;

/*Also Works */
odbc exec("
CREATE VOLATILE MULTISET TABLE vol_tab AS (
    SELECT TOP 10 user_id FROM dw_users
)
WITH DATA
PRIMARY INDEX(user_id)
ON COMMIT PRESERVE ROWS;
"), dsn("mozart");

/* Fails: Load With No Bottom Select Clause */
odbc load, exec("
CREATE VOLATILE MULTISET TABLE vol_tab AS (
    SELECT TOP 10 user_id FROM dw_users
)
WITH DATA
PRIMARY INDEX(user_id)
ON COMMIT PRESERVE ROWS;
") clear dsn("mozart");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多