Erika
Erika

Reputation: 13

NodeJS OracleDB bind parameters returning parameter name

I am very new to NodeJS, but I have been working to use it to serve my Angular project. I need to access an Oracle DB and return some information using a select statement. I have one statement that works correctly using a bind parameter that is set up like this:

        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);
            });

This returns exactly what I want it to, with the bound variable being what I wanted it to be. Below is the code that doesn't work:

        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);
            });

This returns {":COLUMNNAME": "someColumn"}. I do not understand why it won't display the results correctly. The two snippets of code are exactly the same, save the SQL query part. I know this a long question, but I really need help. Thank you!

Upvotes: 1

Views: 3694

Answers (1)

Christopher Jones
Christopher Jones

Reputation: 10536

You can bind data values, not the text of the statement itself.

Upvotes: 1

Related Questions