如何解决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)
不要像其他人建议的那样添加“%”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。