Был ли создан результирующий набор?
В большинстве случаев программисты приложений знают, будут ли инструкции, выполняемые приложением, создавать результирующий набор. Это происходит, если приложение использует жестко закодированные инструкции SQL, написанные программистом. Обычно это происходит, когда приложение создает инструкции SQL во время выполнения: программист может легко включить код, который помечает, создается ли инструкция SELECT или инструкция INSERT . В некоторых ситуациях программист не может знать, будет ли оператор создавать результирующий набор. Это верно, если приложение предоставляет пользователю способ ввода и выполнения инструкции SQL. Это также верно, если приложение создает инструкцию во время выполнения для выполнения процедуры.
В таких случаях приложение вызывает SQLNumResultCols , чтобы определить количество столбцов в результирующем наборе. Если это значение равно 0, оператор не создавал результирующий набор; Если это любое другое число, оператор сделал создание результирующий набор.
Приложение может вызывать SQLNumResultCols в любое время после подготовки или выполнения инструкции. Однако, поскольку некоторые источники данных не могут легко описать результирующие наборы, созданные подготовленными инструкциями, производительность будет страдать, если sqlNumResultCols вызывается после подготовки инструкции, но перед выполнением.
Некоторые источники данных также поддерживают определение количества строк, возвращаемых инструкцией SQL в результирующем наборе. Для этого приложение вызывает SQLRowCount. Точно то, что представляет число строк, указывается параметром SQL_DYNAMIC_CURSOR_ATTRIBUTES2, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2, SQL_KEYSET_CURSOR_ATTRIBUTES2 или параметром SQL_STATIC_CURSOR_ATTRIBUTES2 (в зависимости от типа курсора), возвращаемого вызовом SQLGetInfo. Эта битовая маска указывает для каждого типа курсора, является ли возвращаемое число строк точным, приблизительным или недоступным вообще. Количество строк для статических или управляемых набором ключей курсоров влияет на изменения, внесенные с помощью SQLBulkOperations или SQLSetPos, или от позиционированных инструкций обновления или удаления, зависят от других битов, возвращаемых теми же аргументами параметров, перечисленными ранее. Дополнительные сведения см. в описании функции SQLGetInfo .