Die base driver tut nur die grundlegende Abfrage Formatierung, die auf der Serverebene unterstützt wird, die nicht dynamische Tabellennamen nicht unterstützt.
Dies bedeutet, dass der Tabellenname auf Ihrer Seite maskiert werden muss. Sie können entweder manuell, oder Sie können auf eine Bibliothek verlassen, die es unterstützt, wie das folgende Beispiel, dass verwendet pg-promise:
db.one('SELECT count(*) FROM $1:name', table, a => +a.count)
.then(count => {
// count = the integer record count
})
.catch(error => {
// either table doesn't exist, or a connectivity issue
});
Oder durch Named Parameters mit:
db.one('SELECT count(*) FROM ${table:name}', {table}, a => +a.count)
.then(count => {
// count = the integer record count
})
.catch(error => {
// either table doesn't exist, or a connectivity issue
});
Filter :name
das erzählt Formatierungsmodul, um es als SQL-Name zu entkommen. Dieser Filter hat auch eine kürzere Version ~
, wenn Sie bevorzugen, d. H. $1~
oder ${table~}
entsprechend.
Außerdem verwenden wir die Methode one, da diese Abfrage immer ein Einzeilenergebnis zurück erwartet.
Welche verwendeten DBMS? Es erfordert Dynamic sql –
Ich benutze Postgres –
Überprüfen Sie diese Frage https://StackOverflow.com/Questions/20772195/how-to-select-from-variable-that-is-a-table-name-n-postgre-9 -2 und https://stackoverflow.com/questions/10705616/table-name-as-a-postgresql-function-parameter –