Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Une fois qu’une application envoie une instruction SQL, SQL Server retourne toutes les données résultantes sous la forme d’un ou plusieurs jeux de résultats. Un jeu de résultats est un ensemble de lignes et colonnes qui correspondent aux critères de la requête. Les instructions SELECT, les fonctions de catalogue et certaines procédures stockées produisent un jeu de résultats sous forme de tableau, accessible par une application. Si l'instruction SQL exécutée est une procédure stockée, un lot contenant plusieurs commandes ou une instruction SELECT avec des mots clés, il y aura plusieurs jeux de résultats à traiter.
Les fonctions de catalogue ODBC peuvent aussi récupérer les données. Par exemple, SQLColumns récupère des données sur les colonnes de la source de données. Ces jeux de résultats peuvent contenir zéro ou plusieurs lignes.
D’autres instructions SQL, telles que GRANT ou REVOKE, ne retournent pas d’ensembles de résultats. Pour ces instructions, le code de retour de SQLExecute ou SQLExecDirect est généralement la seule indication que l’instruction a réussi.
Chaque INSERTinstruction , UPDATE, et DELETE renvoie un ensemble de résultats contenant uniquement le nombre de lignes affectées par la modification. Ce nombre est rendu disponible lorsque l’application appelle SQLRowCount. ODBC 3.Les applications x doivent appeler SQLRowCount pour récupérer le jeu de résultats ou SQLMoreResults pour l’annuler. Lorsqu’une application exécute une procédure batch ou stockée contenant plusieurs INSERT, UPDATE, ou DELETE états, l’ensemble de résultats de chaque instruction modification doit être traité avec SQLRowCount ou annulé avec SQLMoreResults. Ces comptages peuvent être annulés en incluant une SET NOCOUNT instruction ON dans la procédure batch ou stockée.
Transact-SQL inclut la SET NOCOUNT déclaration. Lorsque l’option NOCOUNT est activée, SQL Server ne retourne pas le nombre de lignes affectées par une instruction et SQLRowCount retourne 0. La version du pilote ODBC SQL Server Native Client introduit une option SQLGetStmtAttr spécifique au pilote, SQL_SOPT_SS_NOCOUNT_STATUS, pour indiquer si l’option NOCOUNT est activée ou désactivée. Chaque fois que SQLRowCount retourne 0, l’application doit tester SQL_SOPT_SS_NOCOUNT_STATUS. Si SQL_NC_ON est retourné, la valeur 0 de SQLRowCount indique uniquement que SQL Server n’a pas retourné de nombre de lignes. Si SQL_NC_OFF est retourné, cela signifie que NOCOUNT c’est éteint et que la valeur de 0 dans SQLRowCount indique que l’instruction n’a affecté aucune ligne. Les applications ne doivent pas afficher la valeur de SQLRowCount lorsque SQL_SOPT_SS_NOCOUNT_STATUS est SQL_NC_OFF. Les grands lots ou procédures stockées peuvent contenir plusieurs SET NOCOUNT instructions afin que les programmeurs ne puissent pas supposer SQL_SOPT_SS_NOCOUNT_STATUS reste constante. L’option doit être testée chaque fois que SQLRowCount retourne 0.
Plusieurs autres instructions Transact-SQL retournent leurs données dans des messages plutôt que dans des jeux de résultats. Lorsque le pilote ODBC SQL Server Native Client reçoit ces messages, il retourne SQL_SUCCESS_WITH_INFO pour informer l’application que les messages d’information sont disponibles. L’application peut ensuite appeler SQLGetDiagRec pour récupérer ces messages. Les instructions Transact-SQL qui fonctionnent de cette façon sont les suivantes :
DBCC
SETSHOWPLAN (disponible avec les versions antérieures de SQL Server)
SET STATISTICS
PRINT
RAISERROR
Le pilote ODBC SQL Server Native Client retourne SQL_ERROR sur un RAISERROR avec une gravité de 11 ou supérieure. Si la gravité de RAISERROR est supérieure ou égale à 19, la connexion est également abandonnée.
Pour traiter les jeux de résultats à partir d’une instruction SQL, l’application :
détermine les caractéristiques du jeu de résultats ;
lie les colonnes aux variables de programme ;
extrait une valeur unique, une ligne entière de valeurs ou plusieurs lignes de valeurs ;
effectue un test pour voir s'il y a plusieurs jeux de résultats, et si tel est le cas, effectue une nouvelle boucle pour déterminer les caractéristiques du nouveau jeu de résultats.
Le processus de récupération des lignes de la source de données et leur renvoi à l'application est appelé extraction.
Dans cette section
Voir aussi
SQL Server Client Natif (ODBC)
Rubriques de procédure de traitement des résultats (ODBC)