Partager via


Procédure : préparer et exécuter une instruction (ODBC)

Pour préparer une instruction une fois, puis l'exécuter plusieurs fois

  1. Appelez SQLPrepare pour préparer l'instruction.

  2. Éventuellement, appelez SQLNumParams pour déterminer le nombre de paramètres dans l'instruction préparée.

  3. Éventuellement, pour chaque paramètre dans l'instruction préparée :

    • Appelez SQLDescribeParam pour obtenir des informations sur les paramètres.

    • Liez chaque paramètre à une variable de programme à l'aide de SQLBindParameter. Configurez tous les paramètres de données en cours d'exécution.

  4. Pour chaque exécution d'une instruction préparée :

    • Si l'instruction a des marqueurs de paramètres, mettez les valeurs de données dans la mémoire tampon de paramètre lié.

    • Appelez SQLExecute pour exécuter l'instruction préparée.

    • Si des paramètres d'entrée de données en cours d'exécution sont utilisés, SQLExecute retourne SQL_NEED_DATA. Envoyez les données par segments à l'aide de SQLParamData et SQLPutData.

Pour préparer une instruction avec la liaison de paramètre selon les colonnes

  1. Appelez SQLSetStmtAttr pour définir les attributs suivants :

    • Définissez SQL_ATTR_PARAMSET_SIZE au nombre de jeux (S) de paramètres.

    • Définissez SQL_ATTR_PARAM_BIND_TYPE à SQL_PARAMETER_BIND_BY_COLUMN.

    • Définissez l'attribut SQL_ATTR_PARAMS_PROCESSED_PTR de sorte qu'il pointe vers une variable SQLUINTEGER contenant le nombre de paramètres traités.

    • Définissez SQL_ATTR_PARAMS_STATUS_PTR de sorte qu'il pointe vers un tableau [S] de variables SQLUSSMALLINT contenant les indicateurs d'état de paramètre.

  2. Appelez SQLPrepare pour préparer l'instruction.

  3. Éventuellement, appelez SQLNumParams pour déterminer le nombre de paramètres dans l'instruction préparée.

  4. Éventuellement, pour chaque paramètre dans l'instruction préparée, appelez SQLDescribeParam pour obtenir des informations sur les paramètres.

  5. Pour chaque marqueur de paramètre :

    • Allouez un tableau de S mémoires tampons de paramètres pour stocker les valeurs de données.

    • Allouez un tableau de S mémoires tampons de paramètres pour stocker les longueurs de données.

    • Appelez SQLBindParameter pour lier les tableaux de valeur de données et de longueur de données de paramètre au paramètre d'instruction.

    • Si le paramètre est un paramètre d'image ou de texte de données en cours d'exécution, installez-le.

    • Si des paramètres de données en cours d'exécution sont utilisés, installez-les.

  6. Pour chaque exécution d'une instruction préparée :

    • Mettez les valeurs de données S et les longueurs de données S dans les tableaux de paramètres liés.

    • Appelez SQLExecute pour exécuter l'instruction préparée.

    • Si des paramètres d'entrée de données en cours d'exécution sont utilisés, SQLExecute retourne SQL_NEED_DATA. Envoyez les données par segments à l'aide de SQLParamData et SQLPutData.

Pour préparer une instruction avec des paramètres liés selon les lignes

  1. Allouez un tableau [S] de structures, où S est le nombre de jeux de paramètres. La structure a un élément pour chaque paramètre, et chaque élément a deux parties :

    • La première partie est une variable du type de données approprié destinée à contenir les données de paramètres.

    • La deuxième partie est une variable SQLINTEGER destinée à contenir l'indicateur d'état.

  2. Appelez SQLSetStmtAttr pour définir les attributs suivants :

    • Définissez SQL_ATTR_PARAMSET_SIZE au nombre de jeux (S) de paramètres.

    • Définissez SQL_ATTR_PARAM_BIND_TYPE à la taille de la structure allouée à l'Étape 1.

    • Définissez l'attribut SQL_ATTR_PARAMS_PROCESSED_PTR de sorte qu'il pointe vers une variable SQLUINTEGER contenant le nombre de paramètres traités.

    • Définissez SQL_ATTR_PARAMS_STATUS_PTR de sorte qu'il pointe vers un tableau [S] de variables SQLUSSMALLINT contenant les indicateurs d'état de paramètre.

  3. Appelez SQLPrepare pour préparer l'instruction.

  4. Pour chaque marqueur de paramètre, appelez SQLBindParameter pour diriger les pointeurs de valeur de données et de longueur de données de paramètre vers leurs variables dans le premier élément du tableau de structures alloué à l'Étape 1. Si le paramètre est un paramètre de données en cours d'exécution, installez-le.

  5. Pour chaque exécution d'une instruction préparée :

    • Remplissez le tableau de mémoires tampons de paramètres liés avec les valeurs de données.

    • Appelez SQLExecute pour exécuter l'instruction préparée. Le pilote exécute efficacement l'instruction SQL S fois, une fois pour chaque jeu de paramètres.

    • Si des paramètres d'entrée de données en cours d'exécution sont utilisés, SQLExecute retourne SQL_NEED_DATA. Envoyez les données par segments à l'aide de SQLParamData et SQLPutData.