3

エラー: ORA-32102: OCI ハンドルが無効です

var oracle = require('oracle');

oracle.connect({ "hostname": "hostname", "user": "user", "password": "password" },
  function(err, connection) {

    if(err){ console.log("Connect err:" + err); }
    if(connection){ console.log("Connection:" + connection); }

    console.log(connection);
    console.log("........");

    // selecting rows
    connection.execute("SELECT * FROM AUTOLOAN_MASTER WHERE RELIGION = :1", ['R'], 
      function(err, results) {
    if (err) {
      console.log('Failed to query table in Oracle: '+ err);
     req.results = null;
    }
    console.log(req);
    console.log(req.results);
      });

      connection.close();
   });

Oracle パッケージは ubuntu にインストールされています。次のエラーを取得しています: エラー: ORA-32102: 無効な OCI ハンドル

4

1 に答える 1

4

これと同じ問題がありました。connection.close を実行関数に移動します。これは Node であり、物事はノンブロッキングで実行されているため、結果が返される前に接続を閉じています。

var oracle = require('oracle');

oracle.connect({ "hostname": "hostname", "user": "user", "password": "password" },
  function(err, connection) {

    if(err){ console.log("Connect err:" + err); }
    if(connection){ console.log("Connection:" + connection); }

    console.log(connection);
    console.log("........");

    // selecting rows
    connection.execute("SELECT * FROM AUTOLOAN_MASTER WHERE RELIGION = :1", ['R'], 
      function(err, results) {
        if (err) {
          console.log('Failed to query table in Oracle: '+ err);
          req.results = null;
        }
        console.log(req);
        console.log(req.results);
        connection.close(); // Moved inside execute callback
   });
});
于 2013-04-16T23:03:34.473 に答える