SQLGetCursorName() should always return a cursor name, even on an unopened cursor, according to the ODBC documentation from Microsoft. See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcsqlbindparameter.asp
The current behavior is correct for ODBC 2.x, but not ODBC 3.x.