SQLGetData и блочные курсоры
SQLGetData работает с одним столбцом одной строки и не может получить массив, содержащий данные из нескольких строк. Это связано с тем, что основное использование SQLGetData состоит в том, чтобы получить длинные данные в частях, и нет никаких причин сделать это для нескольких строк за раз.
Чтобы использовать SQLGetData с курсором блока, приложение сначала вызывает SQLSetPos для размещения курсора в одной строке. Затем он вызывает SQLGetData для столбца в этой строке. Однако это поведение является необязательным. Чтобы определить, поддерживает ли драйвер использование SQLGetData с блок-курсорами, приложение вызывает SQLGetInfo с параметром SQL_GETDATA_EXTENSIONS.