Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una vez que una aplicación envía una instrucción SQL, SQL Server devuelve los datos resultantes como uno o varios conjuntos de resultados. Un conjunto de resultados es un conjunto de filas y columnas que coinciden con los criterios de la consulta. Las instrucciones SELECT, las funciones de catálogo y algunos procedimientos almacenados generan un conjunto de resultados que está disponible para una aplicación en formato tabular. Si la instrucción SQL ejecutada es un procedimiento almacenado, un lote que contiene varios comandos o una instrucción SELECT que contiene palabras clave, habrá varios conjuntos de resultados que procesar.
Las funciones del catálogo ODBC también pueden recuperar datos. Por ejemplo, SQLColumns recupera datos sobre las columnas del origen de datos. Estos conjuntos de resultados pueden contener cero o más filas.
Otras instrucciones SQL, como GRANT o REVOKE, no devuelven conjuntos de resultados. Para estas instrucciones, el código devuelto de SQLExecute o SQLExecDirect suele ser la única indicación de que la instrucción se realizó correctamente.
Cada instrucción INSERT, UPDATE y DELETE devuelve un conjunto de resultados que contiene solo el número de filas afectadas por la modificación. Este recuento está disponible cuando la aplicación llama a SQLRowCount. ODBC 3. Las aplicaciones x deben llamar a SQLRowCount para recuperar el conjunto de resultados o SQLMoreResults para cancelarlo. Cuando una aplicación ejecuta un lote o un procedimiento almacenado que contiene varias instrucciones INSERT, UPDATE o DELETE, el conjunto de resultados de cada instrucción de modificación debe procesarse mediante SQLRowCount o cancelarse mediante SQLMoreResults. Estos recuentos se pueden cancelar mediante la instrucciones SET NOCOUNT ON en el lote o procedimiento almacenado.
Transact-SQL incluye la instrucción SET NOCOUNT. Cuando se establece la opción NOCOUNT, SQL Server no devuelve los recuentos de las filas afectadas por una instrucción y SQLRowCount devuelve 0. La versión del controlador ODBC de SQL Server Native Client presenta una opción SQLGetStmtAttr específica del controlador, SQL_SOPT_SS_NOCOUNT_STATUS, para informar sobre si la opción NOCOUNT está activada o desactivada. Cada vez que SQLRowCount devuelve 0, la aplicación debe probar SQL_SOPT_SS_NOCOUNT_STATUS. Si se devuelve SQL_NC_ON, el valor de 0 de SQLRowCount solo indica que SQL Server no ha devuelto un recuento de filas. Si se devuelve SQL_NC_OFF, significa que NOCOUNT está desactivado y el valor de 0 de SQLRowCount indica que la instrucción no afecta a ninguna fila. Las aplicaciones no deben mostrar el valor de SQLRowCount cuando se SQL_NC_OFF SQL_SOPT_SS_NOCOUNT_STATUS. Los lotes grandes o procedimientos almacenados pueden contener varias instrucciones SET NOCOUNT para que los programadores no puedan suponer que SQL_SOPT_SS_NOCOUNT_STATUS permanecen constantes. La opción debe probarse cada vez que SQLRowCount devuelve 0.
Otras instrucciones Transact-SQL devuelven sus datos en mensajes en lugar de conjuntos de resultados. Cuando el controlador ODBC de SQL Server Native Client recibe estos mensajes, devuelve SQL_SUCCESS_WITH_INFO para que la aplicación sepa que hay mensajes informativos disponibles. A continuación, la aplicación puede llamar a SQLGetDiagRec para recuperar estos mensajes. Las instrucciones Transact-SQL que funcionan de esta manera son:
DBCC
SET SHOWPLAN (disponible con versiones anteriores de SQL Server)
SET STATISTICS
IMPRESIÓN
RAISERROR
El controlador ODBC de SQL Server Native Client devuelve SQL_ERROR en raiseRROR con una gravedad de 11 o superior. Si la gravedad de RAISERROR es 19 o superior, también se quita la conexión.
Para procesar los conjuntos de resultados desde una instrucción SQL, la aplicación:
Determina las características del conjunto de resultados.
Enlaza las columnas a variables de programa.
Recupera un valor único, una fila completa de valores o varias filas de valores.
Comprueba si hay más conjuntos de resultados y, si es así, vuelve a determinar las características del nuevo conjunto de resultados.
El proceso de recuperar filas del origen de datos y devolverlas a la aplicación se denomina captura.
En esta sección
Véase también
SQL Server Native Client (ODBC)
Temas de procedimientos de procesamiento de resultados (ODBC)