diff --git a/execute.c b/execute.c
index 9afcdf7..a6900b7 100644
--- a/execute.c
+++ b/execute.c
@@ -863,45 +863,34 @@ SC_setInsertedTable(StatementClass *stmt, RETCODE retval)
 	NULL_THE_NAME(conn->tableIns);
 	if (!SQL_SUCCEEDED(retval))
 		return;
-	ptr = NULL;
-	if (IDENTIFIER_QUOTE == *cmd)
+	while (TRUE)
 	{
-		if (ptr = strchr(cmd + 1, IDENTIFIER_QUOTE), NULL == ptr)
-			return;
-		if ('.' == ptr[1])
+		if (IDENTIFIER_QUOTE == *cmd)
 		{
+			if (ptr = strchr(cmd + 1, IDENTIFIER_QUOTE), NULL == ptr)
+				return;
 			len = ptr - cmd - 1;
-			STRN_TO_NAME(conn->schemaIns, cmd + 1, len);
-			cmd = ptr + 2;
-			ptr = NULL;
+			cmd++;
+			ptr++;
 		}
-	}
-	else
-	{
-		if (ptr = strchr(cmd + 1, '.'), NULL != ptr)
+		else
 		{
-			len = ptr - cmd;
-			STRN_TO_NAME(conn->schemaIns, cmd, len);
-			cmd = ptr + 1;
-			ptr = NULL;
+			if (ptr = strchr(cmd + 1, '.'), NULL != ptr)
+				len = ptr - cmd;
+			else
+			{
+				ptr = cmd;
+				while (*ptr && !isspace((UCHAR) *ptr)) ptr++;
+				len = ptr - cmd;
+			}
 		}
-	}
-	if (IDENTIFIER_QUOTE == *cmd && NULL == ptr)
-	{
-		if (ptr = strchr(cmd + 1, IDENTIFIER_QUOTE), NULL == ptr)
-			return;
-	}
-	if (IDENTIFIER_QUOTE == *cmd)
-	{
-		len = ptr - cmd - 1;
-		STRN_TO_NAME(conn->tableIns, cmd + 1, len);
-	}
-	else
-	{
-		ptr = cmd;
-		while (*ptr && !isspace((UCHAR) *ptr)) ptr++;
-		len = ptr - cmd;
+		if (NAME_IS_VALID(conn->tableIns))
+			MOVE_NAME(conn->schemaIns, conn->tableIns);
 		STRN_TO_NAME(conn->tableIns, cmd, len);
+		if ('.' == *ptr)
+			cmd = ptr + 1;
+		else
+			break;
 	}
 }
 
