2016-06-25 25 views
0

Was bedeutet dieser kryptische Fehler?Fehler "Ungültiger Cursorstatus" mit ODBC-Ladebefehl

> 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); 
+0

ich diese Frage häufig, so dass ich beschlossen, eine schöne googleable Antwort für die Nachwelt zu schaffen. –

Antwort

1

Sie erhalten diesen Fehler, da Sie Stata sagen etwas zu laden, aber Ihr Code hat keine SELECT-Klausel, die nicht Teil der Tabellenerstellung ist. Wenn Sie am Ende eine SELECT-Klausel hinzufügen, wird es funktionieren.

Alternativ können Sie odbc exec("SqlStmt") Syntax verwenden, wenn Sie nur eine Tabelle erstellen möchten.

Hier ist ein Beispiel:

/* 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");