FirebirdSQL logo

IStatement

Interface IStatement — remplace (partiellement) isc_stmt_handle.

  1. getInfo

    void getInfo(StatusType* status,
                 unsigned itemsLength,
                 const unsigned char* items,
                 unsigned bufferLength,
                 unsigned char* buffer)

    Remplace isc_dsql_sql_info().

  2. getType

    unsigned getType(StatusType* status)

    Le type d’opérateur ne se trouve actuellement que dans les sources Firebird dans dsql/dsql.h.

  3. getPlan

    const char* getPlan(StatusType* status, FB_BOOLEAN detailed)

    Renvoie le plan d’exécution de l’opérateur.

  4. getAffectedRecords

    ISC_UINT64 getAffectedRecords(StatusType* status)

    Renvoie le nombre d’enregistrements affectés par l’opérateur.

  5. getInputMetadata

    IMessageMetadata* getInputMetadata(StatusType* status)

    Renvoie les métadonnées des paramètres.

  6. getOutputMetadata

    IMessageMetadata* getOutputMetadata(StatusType* status)

    Renvoie les métadonnées des valeurs de sortie.

  7. execute

    ITransaction* execute(StatusType* status,
                          ITransaction* transaction,
                          IMessageMetadata* inMetadata,
                          void* inBuffer,
                          IMessageMetadata* outMetadata,
                          void* outBuffer)

    Exécute toutes les instructions SQL, à l’exception de celles qui renvoient plusieurs lignes de données. Analogique partiel de isc_dsql_execute2() — l’entrée et la sortie de XSLQDA ont été remplacées par des messages d’entrée et de sortie avec les tampons correspondants.

  8. openCursor

    IResultSet* openCursor(StatusType* status,
                           ITransaction* transaction,
                           IMessageMetadata* inMetadata,
                           void* inBuffer,
                           IMessageMetadata* outMetadata,
                           unsigned flags)

    Exécute une instruction SQL qui renvoie potentiellement plusieurs lignes de données. Renvoie l’interface IResultSet qui doit être utilisée pour récupérer ces données. Le format de la sortie est déterminé par le paramètre outMetadata, si NULL est spécifié, le format par défaut sera utilisé.

  9. setCursorName

    void setCursorName(StatusType* status, const char* name)

    Remplace isc_dsql_set_cursor_name().

  10. free

    void free(StatusType* status)

    Détruit l’opérateur, libère l’interface en cas de succès.

  11. getFlags

    unsigned getFlags(StatusType* status)

    Renvoie des indicateurs décrivant comment cette instruction doit être exécutée, un remplacement simplifié de la méthode getType().

  12. getTimeout

    unsigned getTimeout(StatusType* status)

    Renvoie le délai d’expiration de la requête SQL en millisecondes.

  13. setTimeout

    unsigned setTimeout(StatusType* status)

    Définit le délai d’exécution de la requête SQL en millisecondes.

  14. createBatch

    IBatch* createBatch(StatusType* status,
                        IMessageMetadata* inMetadata,
                        unsigned parLength,
                        const unsigned char* par)

    Crée une interface IBatch pour une instruction SQL avec des paramètres d’entrée, ce qui permet à cette instruction d’être exécutée avec plusieurs ensembles de paramètres. Le format des données d’entrée est déterminé par le paramètre inMetadata, le laissant NULL, le package utilise le format par défaut de cette interface. Un bloc de paramètres peut être passé à la fonction createBatch(), qui permet de configurer le comportement du paquet.

Constantes définies par l’interface IStatement

Flag IAttachment::prepare():

  • PREPARE_PREFETCH_NONE — constante pour ignorer les flags, valeur 0.

Les flags suivants peuvent être combinés avec OU pour produire l’effet souhaité :

  1. PREPARE_PREFETCH_TYPE

  2. PREPARE_PREFETCH_INPUT_PARAMETERS

  3. PREPARE_PREFETCH_OUTPUT_PARAMETERS

  4. PREPARE_PREFETCH_LEGACY_PLAN

  5. PREPARE_PREFETCH_DETAILED_PLAN

  6. PREPARE_PREFETCH_AFFECTED_RECORDS

  7. PREPARE_PREFETCH_FLAGS (flag renvoyés par le getFlags())

Pour les combinaisons d’indicateurs les plus couramment utilisées, vous pouvez utiliser les constantes suivantes :

  1. PREPARE_PREFETCH_METADATA

  2. PREPARE_PREFETCH_ALL

Les valeurs renvoyées par l’attribut getFlags():

  1. FLAG_HAS_CURSOR — Utiliser openCursor() pour exécuter cette instruction plutôt que execute()

  2. FLAG_REPEAT_EXECUTE — Lorsqu’une instruction préparée peut être exécutée plusieurs fois avec des paramètres différents.

Les flags passés à openCursor():

  1. CURSOR_TYPE_SCROLLABLE — Ouvre un curseur bidirectionnel.

IStatus

L’interface IStatus remplace ISC_STATUS_ARRAY. La fonctionnalité a été étendue : l’état a un accès séparé aux vecteurs d’erreur et d’avertissement, peut contenir des vecteurs de longueur illimitée, stocke indépendamment les chaînes utilisées dans les vecteurs et n’a pas besoin d’un tampon de chaînes de caractères. Dans C++, IStatus est toujours utilisé dans le wrapper d’état, l’API C++ fournit deux wrappers différents qui ont un comportement différent lorsqu’une erreur est renvoyée par un appel d’API. L’interface a été réduite au minimum (des méthodes telles que la conversion en ext ont été déplacées vers l’interface IUtil pour la rendre plus facile à implémenter par les utilisateurs en cas de besoin.

  1. init

    void init()

    Nettoie l’interface et la réinitialise à son état d’origine.

  2. getState

    unsigned getState()

    Renvoie l’état actuel de l’interface, les flags retournés peuvent être combinés avec OR.

  3. setErrors2

    void setErrors2(unsigned length, const intptr_t* value)

    Définit le contenu du vecteur d’erreur avec la longueur explicitement spécifiée dans l’appel.

  4. setWarnings2

    void setWarnings2(unsigned length, const intptr_t* value)

    Définit le contenu du vecteur d’alerte avec la longueur explicitement spécifiée dans l’appel.

  5. setErrors

    void setErrors(const intptr_t* value)

    définit le contenu du vecteur d’erreur, la longueur est déterminée par le contexte de valeur.

  6. setWarnings

    void setWarnings(const intptr_t* value)

    définit le contenu du vecteur d’alerte, la longueur est déterminée par le contexte de valeur.

  7. getErrors

    const intptr_t* getErrors()

    Renvoie un vecteur d’erreur.

  8. getWarnings

    const intptr_t* getWarnings()

    Renvoie un vecteur d’alerte.

  9. clone

    IStatus* clone()

    Crée un clone de l’interface courante.

Les constantes définies dans IStatus

Les flags renvoyés par l’attribut getState():

  • STATE_WARNINGS

  • STATE_ERRORS

Codes d’achèvement :

  • RESULT_ERROR

  • RESULT_OK

  • RESULT_NO_DATA

  • RESULT_SEGMENT