import ibmdb from 'ibm_db'
async function main() {
const cn = "DATABASE=SAMPLE;HOSTNAME=yadamu-db2;PORT=50000;PROTOCOL=TCPIP;UID=DB2INST1;PWD=oracle;"
const conn = await new Promise((resolve,reject) => {
ibmdb.open(cn,(err, conn) => {
if (err) reject(err)
resolve(conn)
})
})
// we now have an open connection to the database, so lets get some data.
// Execute multiple query and get multiple result sets.
// In case of multiple resultset, query will return an array of result sets.
const param1 = {ParamType:"ARRAY", DataType:1, Data:[4,5,6,7,8]};
const param2 = {ParamType:"ARRAY", DataType:"DOUBLE", Data:[4.1,5.3,6.14,7,8.3]};
const param3 = {ParamType:"ARRAY", DataType:1, Data:[0,1,false,true,0]};
const namearr = [JSON.stringify({}),JSON.stringify([]),JSON.stringify({"AAAA":1}), JSON.stringify(["AAAA","BBBB"]), JSON.stringify({"AAA":1,"BBB":2,CCC:["X","Y"]})];
const param4 = {ParamType:"ARRAY", DataType:"CLOB", Data:namearr, Length:32};
// *** Use "Length: <maxDataLen>" in param Object for unequal size of data.
// Default value is the length of first member of Array.
var queryOptions = {sql:"insert into arrtab values (?, ?, ?, SYSTOOLS.JSON2BSON(?))",
params: [param1, param2, param3, param4],
ArraySize:5};
conn.querySync(`BEGIN DECLARE V_STATEMENT VARCHAR(300) DEFAULT 'drop table arrtab'; DECLARE CONTINUE HANDLER FOR SQLSTATE '42704' BEGIN END; EXECUTE IMMEDIATE V_STATEMENT; END;`)
conn.querySync("create table arrtab (c1 int, c2 double, c3 boolean, c4 BLOB)");
await new Promise((resolve,reject) => {
conn.query(queryOptions, (err, result) => {
if (err) reject(err)
resolve()
})
})
const data = conn.querySync("select c1,c2,c3,SYSTOOLS.BSON2JSON(c4) from arrtab");
console.log("Selected data for table ARRTAB =\n", data);
}
main().then(() => { console.log('success')}).catch((e) => { console.log(e) })
C:\Development\YADAMU>node src\scratch\db2\test3.js
[Error: [IBM][CLI Driver][DB2/LINUXX8664] SQL0443N Routine "JSON2BSON" (specific name "JSON2BSON") has returned an error SQLSTATE with diagnostic text "JSON parsing error for: [], error code: -1 ". SQLSTATE=22546
] {
error: '[ibm_db] SQL_ERROR',
sqlcode: -443,
state: '22546'
}
Can anyone tell me why this fails