我想通過使用oracledb驅動程序的node.js在oracle數據庫上運行用戶定義的函數。我的Oracle函數聲明封裝z_1419_pkg作爲如何使用node.js運行oracle用戶定義的函數
FUNCTION GET_CUSTOMER_INFO(P_COMPANY_NAME VARCHAR2, P_COMP_CODE VARCHAR2) RETURN QC_UTL_PKG.CURSOR_TYPE
IS
C QC_UTL_PKG.CURSOR_TYPE;
V_COMPANY_NAME COMPANIES.COMPANY_NAME%TYPE := TRIM(P_COMPANY_NAME);
V_COMP_CODE COMPANIES.COMPANY_CODE%TYPE := TRIM(P_COMP_CODE);
BEGIN
C := QC_CV_PKG.COMPANIES_BROWSE(NULL,V_COMP_CODE,V_COMPANY_NAME,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL);
RETURN C;
END;
和我的node.js代碼
exports.syncOracle = function (req, res) {
var oracledb = require('oracledb');
var bindvars = {
p1: 'BM Dusters',
p2: 'bmduster',
};
oracledb.getConnection({
user : 'uname',
password : 'password',
connectString : 'locahost/TEST' },
function (err, conn) {
if (err) { console.error(err); return; }
console.log('success');
conn.execute('SELECT Z_1419_PKG.GET_CUSTOMER_INFO(:p1, :p2) from dual;' ,bindvars ,function (error, rows) {
if (error) {
console.log('ERROR: ' + error);
}
return res.status(200).json(rows);
});
});
};
但我正在逐漸
ERROR: Error: ORA-00900: invalid SQL statement
有人能告訴我什麼是錯的我碼。我找不到任何有關如何在oracledb驅動程序中使用oracle函數的文檔或示例。
在此先感謝。
感謝鮑勃。你的答案是helpful.But現在我得到一個不同的錯誤 錯誤:NJS-010:在選擇列表 不支持的數據類型我修改了代碼如下, conn.execute(「SELECT Z_1419_PKG.GET_PARTS_INFO(:P1,: p2)from dual,bindvars,{outFormat:oracledb.OBJECT},function(error,rows){ 仍然會得到相同的錯誤 –
我猜這是因爲這個函數返回一個自定義的遊標類型。而是返回SYS_REFCURSOR,哪個node.js可能能夠處理。但是,由於這是一個新問題,我建議你把它作爲一個新問題發佈。 –