diff --git a/src/interfaces/odbc/execute.c b/src/interfaces/odbc/execute.c
index fd82e0df718ec414fdb9693f40eea5e4750772ab..3f3549c89fd46a97a88f3e1b852a657f0b7eaa46 100644
--- a/src/interfaces/odbc/execute.c
+++ b/src/interfaces/odbc/execute.c
@@ -157,6 +157,13 @@ static char *func = "SQLExecDirect";
 	mylog("**** %s: hstmt=%u, statement='%s'\n", func, hstmt, stmt->statement);
 
 	stmt->prepare = FALSE;
+
+	// If an SQLPrepare was performed prior to this, but was left in 
+	// the premature state because an error occurred prior to SQLExecute
+	// then set the statement to finished so it can be recycled.
+	if ( stmt->status == STMT_PREMATURE )
+		stmt->status = STMT_FINISHED;
+
 	stmt->statement_type = statement_type(stmt->statement);
 
 	//	Check if connection is onlyread (only selects are allowed)