2014-03-19 36 views
1

我有下面這個函數,我想傳遞一個參數到RunQuery方法中,比如runQuery(90)來選擇任何所需的行數。但由於錯誤和連接,我不知道該把它放在哪裏。任何指導非常感謝。如何在Javascript + Node中傳遞參數?

var runQuery = oracle.connect(connectData, function(err, connection, par1) { 
    if (err) { 
     console.log("Error connecting to db:", err); 
     return; 
    } 

    connection.execute("SELECT * FROM HR where rownum <" + par1, [], function(err, results) { 
     if (err) { 
      console.log("Error executing query:", err); 
      return; 
     } 

     console.log(results); 
     connection.close(); // call only when query is finished executing 
    }); 
}); 

回答

0

望着documentation,你可以嘗試重構你的功能如下(未經測試):

function runQuery(stmt, row_num, cb) { 
    stmt.execute([row_num], function(err, count) { 
     if (err) return cb(err); 
     if (count !== 1) return cb(new Error("bad count: " + count)); 
     // We are done 
     return cb(); 
    }); 
} 

var statement = connection.prepare("SELECT * FROM HR where rownum < :1"); 
runQuery(statement, 90, function(err) { 
    if (err) { 
     console.log("Error executing query:", err); 
     return; 
    } 

    console.log(results); 
    connection.close(); // call only when query is finished executing 
}); 

預處理語句包含你想在你的SELECT語句傳遞參數。這當然沒有經過測試,但希望能給你指出你想達到的目標。

+1

謝謝,這是我第一次刺穿Javascript,來自VB世界,它確實是一個學習曲線,但我一直在做bash腳本,這就是爲什麼我想我會嘗試js。再次感謝! – justZito

+1

爲了讓你的答案更好,最好明確指出OP代碼中的安全漏洞,以及OP做錯了什麼。 (我做了後者,但是當你寫下你的答案時,我正在研究前者,並且我決定退出。) – Louis

+0

偉大的指針路易斯,將在建議中考慮因素。必須研究文檔以查看是否有更好的方式將參數傳遞給語句,並找到了批量插入/更新的示例。 – chridam