Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
После отправки инструкции SQL SQL Server возвращает все результирующие данные в виде одного или нескольких результирующих наборов. Результирующий набор — это набор строк и столбцов, которые соответствуют критериям запроса. Инструкции SELECT, функции каталога и некоторые хранимые процедуры создают результирующий набор, доступный приложению в табличной форме. Если выполненная инструкция SQL является хранимой процедурой, пакетом с несколькими командами или инструкцией SELECT, содержащей ключевые слова, для обработки будет несколько результирующих наборов.
Функции каталога ODBC также могут извлекать данные. Например, SQLColumns извлекает данные о столбцах в источнике данных. Эти результирующие наборы могут содержать ноль или больше строк.
Другие инструкции SQL, такие как GRANT или REVOKE, не возвращают результирующие наборы. Для этих инструкций код возврата из SQLExecute или SQLExecDirect обычно является единственным признаком успешного выполнения инструкции.
Каждая инструкция INSERT, UPDATE и DELETE возвращает результирующий набор, содержащий только количество строк, затронутых изменением. Это число становится доступным при вызове SQLRowCount приложения. ODBC 3. Приложения x должны вызывать SQLRowCount , чтобы получить результирующий набор или SQLMoreResults , чтобы отменить его. Когда приложение выполняет пакетную или хранимую процедуру, содержащую несколько инструкций INSERT, UPDATE или DELETE, результирующий набор из каждой инструкции изменения должен обрабатываться с помощью SQLRowCount или отмены с помощью SQLMoreResults. Эти счетчики можно отменить, включив инструкцию SET NOCOUNT ON в пакет или хранимую процедуру.
Transact-SQL включает инструкцию SET NOCOUNT. Если параметр NOCOUNT установлен, SQL Server не возвращает количество строк, затронутых инструкцией, и SQLRowCount возвращает значение 0. Версия драйвера ODBC для собственного клиента SQL Server представляет параметр SQLGetStmtAttr для конкретного драйвера, SQL_SOPT_SS_NOCOUNT_STATUS, чтобы сообщить о том, включен или отключен параметр NOCOUNT. Когда SQLRowCount возвращает значение 0, приложение должно протестировать SQL_SOPT_SS_NOCOUNT_STATUS. Если возвращается SQL_NC_ON, значение 0 из SQLRowCount указывает, что SQL Server не вернул число строк. Если возвращается SQL_NC_OFF, это означает, что NOCOUNT отключен и значение 0 из SQLRowCount указывает, что инструкция не повлияла на строки. Приложения не должны отображать значение SQLRowCount , если SQL_SOPT_SS_NOCOUNT_STATUS SQL_NC_OFF. Большие пакеты или хранимые процедуры могут содержать несколько инструкций SET NOCOUNT, поэтому программисты не могут предполагать, что SQL_SOPT_SS_NOCOUNT_STATUS остается постоянным. Параметр должен проверяться каждый раз, когда SQLRowCount возвращает значение 0.
Несколько других операторов Transact-SQL возвращают данные в сообщениях, а не результирующие наборы. Когда драйвер ODBC собственного клиента SQL Server получает эти сообщения, он возвращает SQL_SUCCESS_WITH_INFO, чтобы сообщить приложению, что информационные сообщения доступны. Затем приложение может вызвать SQLGetDiagRec для получения этих сообщений. Инструкции Transact-SQL, которые работают таким образом:
DBCC
SET SHOWPLAN (доступно с более ранними версиями SQL Server)
SET STATISTICS
ПЕЧАТАТЬ
RAISERROR
Драйвер ODBC собственного клиента SQL Server возвращает SQL_ERROR в RAISERROR с серьезностью 11 или выше. Если уровень серьезности RAISERROR равен 19 или выше, подключение также удаляется.
Чтобы обработать результирующие наборы из инструкции SQL, приложение:
Определяет характеристики результирующий набор.
Привязывает столбцы к программным переменным.
Извлекает одно значение, всю строку значений или несколько строк значений.
Проверяет наличие дополнительных результирующих наборов и, если да, циклы возвращаются к определению характеристик нового результирующий набор.
Процесс извлечения строк из источника данных и их возвращение в приложение называется получением.
В этом разделе
См. также
SQL Server Native Client (ODBC)
Инструкции по обработке результатов (ODBC)