我尝试在nodeJS的IBM_DB2中的选择查询的WHERE
子句中使用IN
参数。
我尝试了以下方法:
const conn = await ibmdb.open(connStr);
const query = 'SELECT NAMES FROM DB.TABLE WHERE SETUP_DATE > ? AND ID IN (?)';
const prepareSmt = await connection.prepare(query);
const result = await prepareSmt.execute(['230101', ['123','124','125']]);
const data = await result.fetchAllSync();
console.log("result = ", data);
当执行上述操作时:我总是得到错误:
Error: Wrong param format!
at /Users/USERNAME/workspace/learning/ibmDB2/node_modules/ibm_db/lib/odbc.js:1550:12
at SimpleQueue.next (/Users/USERNAME/workspace/learning/ibmDB2/node_modules/ibm_db/lib/simple-queue.js:34:5)
at SimpleQueue.maybeNext (/Users/USERNAME/workspace/learning/ibmDB2/node_modules/ibm_db/lib/simple-queue.js:22:10)
at SimpleQueue.push (/Users/USERNAME/workspace/learning/ibmDB2/node_modules/ibm_db/lib/simple-queue.js:15:8)
at ODBCStatement.odbc.ODBCStatement.execute (/Users/USERNAME/workspace/learning/ibmDB2/node_modules/ibm_db/lib/odbc.js:1524:14)
at main (/Users/USERNAME/workspace/learning/ibmDB2/index.js:14:29)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
当我使用没有IN
参数的查询时,同样的查询也能工作。有人能帮助我如何构造查询并在选择查询中使用IN
参数时传递值吗?
使用TOAD,我们可以执行如下查询:Select NAMES from DB.TABLE where SETUP_DATE > '230101' AND ID IN ('123','124','125')
我正尝试从IBM_DB2节点js执行相同的命令。
谢谢纳温
1条答案
按热度按时间x6yk4ghg1#
免责声明,我不知道nodejs,所以这不是一个答案本身,而是成为一个评论的长度。根据executeApi,你可以声明一个数组为:
所以我想你可以这样做:
如果这能把你引向正确的方向,请随意添加你自己的答案。在评论中让我知道,我可以删除这一条。
如果您有许多数量不同的参数,则可能需要研究DECLARE GLOBAL TEMPORARY TABLE,在其中插入参数,然后在查询中对该表进行连接