2017-11-02 13 views
0

こんにちは、私は、クエリを持っていると私はデータを処理するためにResultSetを使用していますが終了していません。クエリは正常に動作しますが、 'ORDER BY name des'を追加するとORA-00933:SQLコマンドが正しく終了しませんでした。ORDERは私にORA-00933を与える:SQLコマンドが正常に

これは私の質問です。

router.post('/report/', jsonParser, function (req, res) { 
    var data = req.body, 
     startRow = data.startRow, 
     numRows = data.numRows, 
     sortCol = data.sortCol, 
     sortDir = data.sortDir; 

    var countQuery = 'SELECT COUNT(*) ' + 
     'FROM this_view ' ; 

    var query = 'SELECT t.NAME "NAME", ' + 
       't.AGE "AGE" ' + 
       'FROM this_view t ' + 
       'ORDER BY NAME desc'; 

    var seg, 
     orderBy, 
     offset; 

    orderBy = ' ORDER BY UPPER(' + sortCol + ') ' + sortDir; 
    offset = ' OFFSET ' + startRow + ' ROWS FETCH NEXT ' + numRows + ' ROWS ONLY'; 

    query += orderBy; 
    query += offset; 

     async.parallel({ 
     rows: function (callback) { 
      pool.getConnection(function (err, connection) { 
       logger.info("Begin Connection: " + (new Date().toString())); 
       if (err) { 
        logger.error(err.message); 
        return; 
       } 

       logger.info("Begin execute: " + (new Date().toString())); 

       connection.execute(
        query, 
        [], 
        { 
         resultSet: true, 
         prefetchRows: 1000 
        }, 
        function (err, result) { 
         logger.info("End execute: " + (new Date().toString())); 
         // var rowsProcessed = 0; 
         // var startTime; 
         if (err) { 
          logger.error(err.message); 
          callback("Something broke in the first thing"); 
          doRelease(connection); 
          return; 
         } 
         var procJson = []; 
         function fetchRowsFromRS(connection, resultSet, numRows) { 
          resultSet.getRows(
           numRows, // get this many rows 
           function (err, rows) { 
            if (err) { 
             console.error(err); 
             doClose(connection, resultSet); // always close the result set 
            } else if (rows.length > 0) { 

             /** 
             * For each row in the result, pushes a new object to the rows array 
             * In each new object, the key is assigned and the result row value set 
             */ 
             for (var i = 0; i < rows.length; i++) { 
              procJson.push({}); 
              for (var j = 0; j < resultSet.metaData.length; j++) { 
               procJson[i][resultSet.metaData[j].name.toLowerCase()] = rows[i][j]; 
              } 
             } 

             //TODO: Add null handling 
             logger.info("Send JSON: " + (new Date().toString())); 
             logger.info("JSON Sent: " + (new Date().toString())); 
             if (rows.length === numRows) // might be more rows 
              fetchRowsFromRS(connection, resultSet, numRows); 
             else 
              doClose(connection, resultSet); // always close the result set 
            } else { 
             callback(null, procJson); 
             doClose(connection, resultSet); // always close the result set 
            } 
           }); 
         } 
         fetchRowsFromRS(connection, result.resultSet, numRows) 
        }); 
      }); 
     }, 
     totalRows: function (callback) { 
      pool.getConnection(function (err, connection) { 
       logger.info("Begin Connection: " + (new Date().toString())); 
       if (err) { 
        logger.error(err.message); 
        return; 
       } 

       logger.info("Begin execute: " + (new Date().toString())); 

       connection.execute(
        countQuery, 
        function (err, result) { 
         logger.info("End execute: " + (new Date().toString())); 
         if (err) { 
          logger.error(err.message); 
          callback("Something broke"); 
          doRelease(connection); 
          return; 
         } 

         logger.info("Send JSON: " + (new Date().toString())); 
         callback(null, result.rows[0][0]); 
         logger.info("JSON Sent: " + (new Date().toString())); 

         doRelease(connection); 
        }); 
      }); 
     } 
    }, function(err, result){ 
     if(err){ 
      logger.error(err); 
     } 

     res.send(result); 
    }); 
}); 

私は改ページを行っているので、クエリ自体にORDER BYを使用していますか?

私は、クエリにORDER BYを使用していけない場合は、すべてが正常に動作します。ご意見をお聞かせください。

答えて

0

あなたがNAMEデC BY ORDERを意味しないのですか?

+0

申し訳ありません。そのdesc。ここにコードを貼り付けると、タイプミスがありました。それを更新する – a2441918

関連する問題