注册

node.js使用dmdb调用返回游标的存储过程的问题,实在搞不定了

silence 2024/11/19 425 2

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: DM8
【操作系统】:WINDOWS11
【CPU】:13th Gen Intel(R) Core(TM) i9-13900H 2.60 GHz
【问题描述】*:

import dmdb from 'dmdb' const reqFunc = async () => { try { const pool = await dmdb.createPool({ connectString: 'dm://zckf:zckf@192.168.110.20:5236?loginEncrypt=false', poolAlias: 'mypool' }) const conn = await pool.getConnection() let funcName = `begin :ret := pkg_imp_common.Getinfno(:var_infno, :var_output, :cur_data); end;` const params = { ret: { dir: dmdb.BIND_OUT, type: dmdb.STRING }, var_infno: '100006', var_output: { dir: dmdb.BIND_OUT, type: dmdb.STRING, maxSize: 500 }, cur_data: { dir: dmdb.BIND_OUT, type: dmdb.CURSOR } } const result = await conn.execute(funcName, params) console.log(result.outBinds) // const cursor = result.outBinds[2] // 位置 2 对应 cur_data // if (cursor) { // const rows = await cursor.getRows() // 获取所有行 // console.log(rows) // // 关闭游标 // await cursor.close() // } else { // console.log('游标为空') // } } catch (err) { console.log(err) } } reqFunc()
PS D:\Innovation\Develop\implat-dm-api> node test.js [ 1, '{"code":"0","message":"执行成功","db_time":"2024-11-19 12:18:33","output":{"data":{}}}', null ]

游标返回的是null呢, 我确定这个存储过程没有问题, 以下是直接调用存储过程的代码

[执行语句1] Declare Ret Number(2); Var_Output Varchar2(500); Cur_Data Sys_Refcursor; Var_Code Varchar2(100); Var_Name Varchar2(100); Var_Pinyin Varchar2(100); Begin Ret := Pkg_Imp_Common.Getinfno('100006', Var_Output, Cur_Data); Fetch Cur_Data Into Var_Code, Var_Name, Var_Pinyin; dbms_output.put_line(Var_Code); dbms_output.put_line(Var_Name); dbms_output.put_line(Var_Pinyin); End; 执行成功,执行耗时1毫秒。 影响了1条记录。 100006 登录 DL
回答 0
暂无回答
扫一扫
联系客服