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.
3 réponses
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(...);
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
// ...
});
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.
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.