oracledb Nodejs 更新查询中阿拉伯字符始终为空

问题描述 投票:0回答:1

我正在使用 NodeJS 在 Oracle 数据库中运行查询

await executeQuery(connection, updateStatusQueryFail, {
    status: "unmatched",
    iban: iban,
    NID_MISMATCH: mismatches['nid'],
    PASSPORT_MISMATCH: mismatches['passport_number']
    PHONE_MISMATCH: mismatches['phone'],
  });

mismatches.passport_number
中有阿拉伯语值,上面的查询映射到

const updateStatusQueryFail = `UPDATE DIGX_CZ_CBL_FCMS_ACCOUNT_LIST
 SET STATE = :status,
 NID_MISMATCH = :NID_MISMATCH,
 PASSPORT_MISMATCH = :PASSPORT_MISMATCH,
 PHONE_MISMATCH = :PHONE_MISMATCH,
 UPDATED_AT= SYSDATE
 WHERE IBAN = :iban`; 

奇怪的是,当我这样尝试时它不起作用

await executeQuery(connection, updateStatusQueryFail, {
    status: "unmatched",
    iban: iban,
    NID_MISMATCH: mismatches['nid'],
    PASSPORT_MISMATCH: mismatches['passport_number'],
    PHONE_MISMATCH: mismatches['phone'],
  });

但是当我尝试这样的时候就可以了

await executeQuery(connection, updateStatusQueryFail, {
    status: "unmatched",
    iban: iban,
    NID_MISMATCH: mismatches['nid'],
    PASSPORT_MISMATCH:  'يجب أن يحتوي النص رقم جواز السفر على 8 حروفٍ/حرفًا بالظبط'
    PHONE_MISMATCH: mismatches['phone'],
  });

我使用的是 Node 20 版本,带有 oracledb 驱动程序。任何帮助将不胜感激。哦,是的,没有抛出错误。

差不多已经花了4-6个小时了。

node.js plsql node-oracledb node-oracle
1个回答
0
投票

您没有在

PASSPORT_MISMATCH

之后添加逗号
await executeQuery(connection, updateStatusQueryFail, {
    status: "unmatched",
    iban: iban,
    NID_MISMATCH: mismatches['nid'],
    PASSPORT_MISMATCH: mismatches['passport_number'],
    PHONE_MISMATCH: mismatches['phone'],
  });

执行此操作后,应将 Oracle 数据库配置为使用包括阿拉伯字符的适当字符集。

此外,请确保正确配置与 Oracle 数据库的连接以处理 Unicode 字符。

© www.soinside.com 2019 - 2024. All rights reserved.