Oracle 和 Nodejs - 无法在 SQL 语句中绑定参数

Oracle and Nodejs - can't bind parameters in SQL statement

您好,我使用 node-oracle

执行以下语句
await connection.execute(`SELECT * FROM TABLE WHERE NAME LIKE '%And%'`)

但现在我想绑定一个参数而不是使用硬编码值

const queryText = 'And';
await connection.execute(`SELECT * FROM TABLE WHERE NAME LIKE '%:queryText%'`, {queryText});

它抛出 Error: ORA-01036: illegal variable name/number

这里绑定参数的正确方法是什么,因为文档没有涵盖这种情况?

使用字符串连接:

SELECT * FROM TABLE WHERE NAME LIKE '%' || :queryText || '%'

尝试以下方法:

const queryText = 'And';
await connection.execute(

"SELECT * FROM TABLE WHERE NAME LIKE :queryText", 

{

queryText: { dir: oracledb.BIND_IN, val: '%'+ queryText +'%', type: oracledb.STRING }

});


这是一个工作示例。

let queryText = "John"
let sql = "SELECT * FROM TABLE WHERE NAME LIKE :queryText"
let binds = {queryTarget: {dir: oracledb.BIND_IN, val: queryText, type: oracledb.STRING}}

let result = await connection.execute(sql, binds, options)

不要像其他人建议的那样添加“%”。