const query = `INSERT INTO countries VALUES (:country_id, :country_name)`;
try {
const result = await connection.execute(query, { country_id: 90, country_name: "Tonga" });
} catch (error) {
console.error(`error while executing: ${query}`);
}
Есть ли способ зарегистрировать query
вместе с данными параметров привязки
так что я могу войти INSERT INTO countries VALUES (90, "Tonga")
Я думаю, что в настоящее время нет встроенной опции для этого, но, согласно документации, вы можете создать оболочку вокруг функции execute
и зарегистрировать там фактический запрос. Из документов:
Иногда полезно отслеживать значения данных привязки, которые были используется при выполнении операторов. Доступно несколько методов.
В базе данных Oracle представление V$SQL_BIND_CAPTURE может захватывать привязку информация. Трассировка с помощью Oracle Database DBMS_MONITOR.SESSION_TRACE_ENABLE() также может быть полезен.
Вы также можете написать свою собственную оболочку для execute() и регистрировать любые параметры.
В конце концов, я нашел пакет, известный как bind-sql-string, в котором есть queryBindToString
метод, решающий мою проблему. 🎉
A wrapper to log any parameters
будет регистрировать только переменные привязки, верно? но это не будет очень полезно, если что-то пойдет не так, и кто-то захочет отладить запрос с огромным набором переменных связывания, я думаю, что регулярное выражение может решить эту проблему.