Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 2 Next »

This API will return an object containing a set of functions that can help dynamically create SQL statements based on the current database connection type.

  • formatTableName(tableName) - send in table name (can be library/table or schema.table) and it will return the string of a table name along with the escape characters.  In MySQL table1 is returned as `table1`, but in MSSQL it is returned as [table1]
  • formatColumnName(fieldName) - return the string of a table field name along with the escape characters.  In MySQL field1 is returned as `field1`, but in MSSQL it is returned as [field1]
  • getParameterToken(value, fieldType) - this will return the token parameter for that value. In almost every case will return a "?"
  • injectLimits(sqlString, rows, skip) - insert the necessary verbiage into the sqlString so that the statement will only return those results.
  • finalizeSQL(sqlString, sqlArgs) - SQL statement and the array of arguments.  If debugged is enabled, this will automatically call the dumpSQLStatement()
  • dumpSQLStatement(sqlString, sqlArgs) - this will send the passed in sql statement to the standard output.


const sqlHelper = profound.utils.sqlHelper();

function demo(request, response) {

  // Build the "Select Clause"
  let columns = [];
  // This function does check for exact case match, but if not found then finds first match regardless of case.
  columns.push(sqlHelper.formatColumnName("customerNumber"));
  columns.push(sqlHelper.formatColumnName("customerName"));


  // Build the "From Clause"
  // This function does check for exact case match, but if not found then finds first match regardless of case.
  let table = sqlHelper.formatTableName("customers");


  // Build the "Where Clause"
  let custIDField = sqlHelper.formatColumnName("customerNumber");

  let fromCustID = 100;
  let toCustID = 300;
  let fromCustIDToken = sqlHelper.getParameterToken(fromCustID, "number");
  let toCustIDToken = sqlHelper.getParameterToken(toCustID, "number");


  // Construct entire statement
  let sqlStmt = `SELECT ${columns.join(",")} FROM ${table} WHERE ${custIDField} BETWEEN ${fromCustIDToken} AND ${toCustIDToken} Order by ${custIDField}`;


  // Get the next 5 records, after skipping the first 10 records --> aka 3rd page of 5 records per page
  sqlStmt = sqlHelper.injectLimits(sqlStmt, 5, 10);


  // Some databases (like MSSQL) require these parameters be named instead of the just a simple ?.
  sqlHelper.finalizeSQL(sqlStmt, [fromCustID, toCustID]);


  // Run the statement
  let results = pjs.query(sqlStmt, [fromCustID, toCustID]);


  // Send the results back to browser
  response.send(results);
}

exports.default = demo;

  • No labels