Fonction SQLNumParams
Conformité
Version introduite : Conformité aux normes ODBC 1.0 : ISO 92
Résumé
SQLNumParams retourne le nombre de paramètres dans une instruction SQL.
Syntaxe
SQLRETURN SQLNumParams(
SQLHSTMT StatementHandle,
SQLSMALLINT * ParameterCountPtr);
Arguments
StatementHandle
[Entrée] Handle d’instruction.
ParameterCountPtr
[Sortie] Pointeur vers une mémoire tampon dans laquelle retourner le nombre de paramètres dans l’instruction.
Retours
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR ou SQL_INVALID_HANDLE.
Diagnostics
Lorsque SQLNumParams retourne SQL_ERROR ou SQL_SUCCESS_WITH_INFO, une valeur SQLSTATE associée peut être obtenue en appelant SQLGetDiagRec avec un HandleType de SQL_HANDLE_STMT et un Handle of StatementHandle. Le tableau suivant répertorie les valeurs SQLSTATE couramment retournées par SQLNumParams et explique chacune d’elles dans le contexte de cette fonction ; la notation « (DM) » précède les descriptions de SQLSTATEs retournées par le Gestionnaire de pilotes. Le code de retour associé à chaque valeur SQLSTATE est SQL_ERROR, sauf indication contraire.
SQLSTATE | Error | Description |
---|---|---|
01000 | Avertissement général | Message d’information spécifique au pilote. (La fonction retourne SQL_SUCCESS_WITH_INFO.) |
08S01 | Échec de la liaison de communication | La liaison de communication entre le pilote et la source de données à laquelle le pilote a été connecté a échoué avant que la fonction n’ait terminé le traitement. |
HY000 | Erreur générale | Une erreur s’est produite pour laquelle il n’y avait pas de SQLSTATE spécifique et pour laquelle aucun SQLSTATE spécifique à l’implémentation n’a été défini. Le message d’erreur retourné par SQLGetDiagRec dans la mémoire tampon *MessageText décrit l’erreur et sa cause. |
HY001 | Erreur d’allocation de mémoire | Le pilote n’a pas pu allouer la mémoire nécessaire pour prendre en charge l’exécution ou l’achèvement de la fonction. |
HY008 | Opération annulée | Le traitement asynchrone a été activé pour l’instruction StatementHandle. La fonction SQLNumParams a été appelée et, avant la fin de l’exécution, SQLCancel ou SQLCancelHandle a été appelée sur l’InstructionHandle ; la fonction SQLNumParams a ensuite été appelée à nouveau sur l’instruction StatementHandle. Ou bien, la fonction SQLNumParams a été appelée et, avant de terminer l’exécution, SQLCancel ou SQLCancelHandle a été appelé sur l’InstructionHandle à partir d’un autre thread dans une application multithread. |
HY010 | Erreur de séquence de fonction | (DM) La fonction a été appelée avant d’appeler SQLPrepare ou SQLExecDirect pour l’InstructionHandle. (DM) Une fonction d’exécution asynchrone a été appelée pour le handle de connexion associé à l’InstructionHandle. Cette fonction asynchrone était toujours en cours d’exécution lorsque la fonction SQLNumParams a été appelée. (DM) Une fonction d’exécution asynchrone (et non celle-ci) a été appelée pour l’InstructionHandle et s’exécutait toujours lorsque cette fonction a été appelée. (DM) SQLExecute, SQLExecDirect, SQLBulkOperations ou SQLSetPos a été appelé pour l’InstructionHandle et a renvoyé SQL_NEED_DATA. Cette fonction a été appelée avant l’envoi des données pour toutes les colonnes ou paramètres de données au moment de l’exécution. |
HY013 | Erreur de gestion de la mémoire | L’appel de fonction n’a pas pu être traité, car les objets de mémoire sous-jacents n’ont pas pu être consultés, peut-être en raison de conditions de mémoire insuffisantes. |
HY117 | La connexion est suspendue en raison d’un état de transaction inconnu. Seules les fonctions de déconnexion et de lecture seule sont autorisées. | (DM) Pour plus d’informations sur l’état suspendu, consultez FONCTION SQLEndTran. |
HYT01 | Délai d’attente de la connexion expiré | Le délai d’expiration de la connexion a expiré avant que la source de données réponde à la demande. La période de délai d’expiration de la connexion est définie via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
IM001 | Le pilote ne prend pas en charge cette fonction | (DM) Le pilote associé à l’InstructionHandle ne prend pas en charge la fonction. |
IM017 | L’interrogation est désactivée en mode de notification asynchrone | Chaque fois que le modèle de notification est utilisé, l’interrogation est désactivée. |
IM018 | SQLCompleteAsync n’a pas été appelé pour effectuer l’opération asynchrone précédente sur ce handle. | Si l’appel de fonction précédent sur le handle retourne SQL_STILL_EXECUTING et si le mode de notification est activé, SQLCompleteAsync doit être appelé sur le handle pour effectuer un post-traitement et terminer l’opération. |
Commentaires
SQLNumParams ne peut être appelé qu’après l’appel de SQLPrepare .
Si l’instruction associée à StatementHandle ne contient pas de paramètres, SQLNumParams définit *ParameterCountPtr sur 0.
Le nombre de paramètres retournés par SQLNumParams est la même valeur que le champ SQL_DESC_COUNT de l’IPD.
Pour plus d’informations, consultez Description des paramètres.
Fonctions connexes
Pour obtenir des informations sur | Consultez |
---|---|
Liaison d’une mémoire tampon à un paramètre | Fonction SQLBindParameter |
Retour d’informations sur un paramètre dans une instruction | Fonction SQLDescribeParam |
Voir aussi
Informations de référence sur l’API ODBC
Fichiers d’en-tête ODBC