首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle和Nodejs -无法绑定SQL语句中的参数

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

Stack Overflow用户
提问于 2020-11-02 19:41:12
回答 3查看 826关注 0票数 0

您好,我有以下使用node-oracle执行的语句

代码语言:javascript
复制
await connection.execute(`SELECT * FROM TABLE WHERE NAME LIKE '%And%'`)

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

代码语言:javascript
复制
const queryText = 'And';
await connection.execute(`SELECT * FROM TABLE WHERE NAME LIKE '%:queryText%'`, {queryText});

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

在这里绑定参数的正确方式是什么,因为文档没有介绍这种情况?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-02 19:56:17

尝试执行以下操作:

代码语言:javascript
复制
const queryText = 'And';
await connection.execute(

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

{

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

});
票数 2
EN

Stack Overflow用户

发布于 2020-11-02 19:41:54

使用字符串连接:

代码语言:javascript
复制
SELECT * FROM TABLE WHERE NAME LIKE '%' || :queryText || '%'
票数 0
EN

Stack Overflow用户

发布于 2021-02-08 08:50:11

下面是一个有效的示例。

代码语言:javascript
复制
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)

不要像其他人建议的那样添加'%‘。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64644899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档