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

问题描述

嗨,我有以下语句是使用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

由于文档未涵盖这种情况,因此此处绑定参数的正确方法是什么?

解决方法

尝试以下操作:

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

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

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

});


,

使用字符串串联:

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

这是一个工作示例。

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)

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