执行下面的查询时出现此错误,但选中的括号已完成。
错误:[错误:ora-00907:缺少右括号]{
import oracledb from 'oracledb'
const { ORACLE_USER, ORACLE_PASSWORD } = ORACLE_CONFIG
connection = await oracledb.getConnection({
user: ORACLE_USER,
password: ORACLE_PASSWORD,
connectString: 'xxxx'
})
console.log('------------------*************[Info] Successfully connected to Oracle!************-----------------')
const { customerId, flag, Name, insertDate } = params
const result = await connection.execute(`Insert into table1
(customer_id, name, status_flag, insert_date, update_date)
Values
(${customerId}, ${Name}, ${flag}, TO_DATE(${insertDate}, 'MM/DD/YYYY HH24:MI:SS'), TO_DATE(${insertDate}, 'MM/DD/YYYY HH24:MI:SS'))`)
2条答案
按热度按时间sulc1iza1#
alessandro是对的-您使用的是模板字符串,它只是用字符串替换模板文本。因此,对于一些示例数据,运行时的insert语句实际上如下所示:
这不是有效的sql。您可以像alessandro建议的那样在模板字符串周围加单引号,这样可以解决问题,但是请注意,您的代码很容易受到sql注入的攻击。
节点oracledb文档中有一些使用绑定变量的示例,这是sql的最佳实践。例如,下面介绍如何使用“按位置绑定”语法:
6za6bjd02#
代码中有很多没有撇号的字符串。假设
${Name}
,${flag}
以及${insertDate}
如果是字符串,你需要在它们之前和之后加上'MM/DD/YYYY HH24:MI:SS
.