Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

NodeJS MSSQL WHERE IN Vorbereitete SQL-Anweisung

Es scheint, dass die Datei sql Objekt (also das mssql Modul) hat kein Attribut, um Arrays von irgendetwas zu handhaben. Außerdem die Angabe eines skalaren Typs im Aufruf von ps.input funktioniert ebenfalls nicht.

Das Nächstbeste ist, Schlüssel für Ihr Array von Parametern in Ihre SQL-Anweisung selbst einzubauen:

var connection = new sql.Connection(config, function(err) {
        var ps = new sql.PreparedStatement(connection);
        // Construct an object of parameters, using arbitrary keys
        var paramsObj = params.reduce((obj, val, idx) => {
            obj[`id${idx}`] = val;
            ps.input(`id${idx}`, sql.VarChar(200));
            return obj;
        }, {});
        // Manually insert the params' arbitrary keys into the statement
        var stmt = 'select * from table where id in (' + Object.keys(paramsObj).map((o) => {return '@'+o}).join(',') + ')';
        ps.prepare(stmt, function(err) {
            ps.execute(paramsObj, function(err, data) {
                callback(null, data);
                ps.unprepare(function(err) {
                });
            });
        });
    });
}