我正在尝试通过存储过程获取结果集。
当我调用该程序时,它给了我一个 ORA-01036:非法变量名/编号\n。
我正在使用 node-oracledb 来获取数据。实施如下。请就如何正确处理它提供一些建议。
router.put('/get-data/', jsonParser, function (req, res) {
var data = req.body;
logger.info("Begin: " + (new Date().toString()));
pool.getConnection(function (err, connection) {
logger.info("Begin Connection: " + (new Date().toString()));
if (err) {
logger.error(err.message);
return;
}
var bindvars = {
userName: data.userName,
filterText: data.appId,
sortCol: data.sortCol,
numRows: data.numRows,
startRow: data.startRow,
resultSet: {dir: oracledb.BIND_OUT, type: oracledb.STRING, maxSize: 32767},
error: {dir: oracledb.BIND_OUT, type: oracledb.STRING, maxSize: 4000}
};
console.log(bindvars);
logger.info("Bindvars Set: " + (new Date().toString()));
logger.info('***********************************');
logger.info('Get Data - PUT');
logger.info('User Name: ', bindvars.userName);
logger.info('Filter Text: ', bindvars.filterText);
logger.info('Sort: ', bindvars.sortCol);
logger.info('Page Length: ', bindvars.numRows);
logger.info('Start Row: ', bindvars.startRow);
logger.info('***********************************');
logger.info("Begin execute: " + (new Date().toString()));
//PL/SQL function syntax
connection.execute(
"BEGIN procedure(:userName, :filterText, :sort, :numRows, :startRow, :resultSet, :error); END;",
bindvars,
function (err, result) {
logger.info("End execute: " + (new Date().toString()));
if (err) {
logger.error(err.message);
doRelease(connection);
return;
}
logger.info("Send JSON: " + (new Date().toString()));
console.log(result);
res.send(result);
logger.info("JSON Sent: " + (new Date().toString()));
doRelease(connection);
});
});
});
我的绑定变量如下:
{
userName: 'Arun',
filterText: '',
sortCol: 'application_name',
numRows: 10,
startRow: 0,
resultSet: { dir: 3003, type: 2001, maxSize: 32767 },
error: { dir: 3003, type: 2001, maxSize: 4000 }
}
这是包的测试声明。
set define ON;
declare
v_user_name varchar2(100) := 'Arun';
v_filter_text VARCHAR2(30) := 'A123';
v_sort VARCHAR2(50) := 'application_name';
v_page_length PLS_INTEGER := 10;
v_start_row PLS_INTEGER := 0;
v_resultset CLOB;
v_error VARCHAR2(200);
begin
get_data(i_user_name => v_user_name,
i_filter_text => v_filter_text,
i_sort => v_sort ,
i_page_length => v_page_length ,
i_start_row => v_start_row ,
o_resultset => v_resultset,
o_error => v_error );
end;