J'utilise node-sql. recordSet n'est pas défini lorsque j'essaie d'insérer un enregistrement dans une table à l'aide de l'instruction Préparer. Voici l'exemple de ligne de code.

ps.execute(data, function (err, recordSet, affected) { });

Bien que l'enregistrement soit correctement inséré dans la base de données, il me donne une variable non définie dans la fonction de rappel.

0
Siraj ul Haq 7 mars 2016 à 15:06

3 réponses

Meilleure réponse

Oui, j'ai trouvé une réponse, nous devons spécifier les enregistrements à renvoyer à l'aide de la clause OUTPUT. Comme:

INSERT INTO Table OUTPUT.Id VALUES(...);
0
Siraj ul Haq 7 mars 2016 à 13:10

Vous n'avez pas partagé ce que fait réellement votre déclaration. cependant, si vous insérez un enregistrement à l'aide des instructions prepare. puis au lieu de recordSet, vous pouvez utiliser les paramètres de rappel "returnValue" ou "affectés". Comme le nœud-sql déclare que le jeu d'enregistrements aura des valeurs si vous exécutez des requêtes de sélection qui renverront un jeu d'enregistrements. Voir

request.execute('record', function(err, recordsets, returnValue, affected) {
    // ... error checks

    console.log(recordsets.length); // count of recordsets returned by the procedure
    console.log(recordsets[0].length); // count of rows contained in first recordset
    console.log(returnValue); // procedure return value
    console.log(recordsets.returnValue); // same as previous line
    console.log(affected); // number of rows affected by the statemens
    console.log(recordsets.rowsAffected); // same as previous line

    console.log(request.parameters.output_parameter.value); // output value

    // ...
});
0
Hafiz Arslan 7 mars 2016 à 12:31

Selon la documentation de node-mssql (j'ai parcouru tout cela, croyez-moi), le ou les jeux d'enregistrements sont des jeux retournés lorsque vous exécutez une requête de sélection. Étant donné que vous exécutez une requête d'insertion, elle est très probablement indéfinie. Parce que même si le jeu d'enregistrements doit être retourné, ce serait l'ensemble (y compris votre ligne nouvellement insérée) qui n'est pas très utile en insertion :)

En bref, si votre requête ne contient pas de sélection, vous obtiendrez un jeu d'enregistrements indéfini. J'espère que cela t'aides.

0
Muhammad Ahsan Ayaz 7 mars 2016 à 12:52