NodeJS OracleDB绑定参数返回参数名称

时间:2015-07-21 16:16:59

标签: angularjs node.js oracle

我是NodeJS的新手,但我一直在努力用它来服务我的Angular项目。我需要访问Oracle DB并使用select语句返回一些信息。我有一个语句使用如下设置的绑定参数正确工作:

        var resultSet;
        connection.execute("SELECT column_name, decode(data_type, 'TIMESTAMP(3)','NUMBER'" 
                    + ",'VARCHAR2','STRING','CHAR', 'STRING','NUMBER') as \"DATA_TYPE\""
                    + "FROM someTable where table_name = :tableName",
            [table], //defined above
            {outFormat: oracledb.OBJECT},
            function (err, result) {
                if (err) {
                    console.error(err.message);
                    doRelease(connection);
                    return;
                }
                resultSet = result.rows;
                console.log("Received " + resultSet.length + " rows.");
                res.setHeader('Content-Type', 'application/json');
                var JSONresult = JSON.stringify(resultSet);
               // console.log(JSONresult);
                res.send(JSONresult);
                doRelease(connection);
            });

这将完全返回我想要的内容,绑定变量就是我想要的。以下代码不起作用:

        var resultSet;
        connection.execute(
            "SELECT DISTINCT :columnName from someTable",
            ['someColumn'],
            {outFormat: oracledb.OBJECT},
            function (err, result) {
                if (err) {
                    console.error(err.message);
                    doRelease(connection);
                    return;
                }
                resultSet = result.rows;
                console.log("Received " + resultSet.length + " rows.");
                res.setHeader('Content-Type', 'application/json');
                var JSONresult = JSON.stringify(resultSet);
                console.log(JSONresult);
                res.send(JSONresult);
                doRelease(connection);
            });

返回 {“:COLUMNNAME”:“someColumn”} 。我不明白为什么它不能正确显示结果。两个代码片段完全相同,保存SQL查询部分。我知道这个问题很长,但我真的需要帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以绑定数据值,而不是语句本身的文本。