Dynamic SQL

In my book OCA Oracle Database SQL Expert Exam Guide (Exam 1Z0-047), I mention the use of something called “dynamic SQL” on page 391. I’ve since received some email asking for more information about it. The concept I was referring to with the phrase “dynamic SQL” is simple: write software code to create SQL statements in real time, based on the logic within the script. A typical use in many websites today is to create some sort of code using PHP or Perl to display an HTML page, ask the user questions, and then issue a custom-written SQL statement to interact with the database accordingly. An example might be to create an HTML page that displays a form:

<html>
<head>
  <title>Sample Form</title></head>
<body>
  <h1>Click Display list of customers</h1>
  <form id="form1" name="form1" method="post" action="test.php">
  Choose order for displaying the results:
  <select name=parm_OrderBy>
    <option value="DESC" selected>Descending
    <option value="ASC">Ascending
  </select><br>
  <input type=submit value='Display Results'  />
  </form> 
</body>
</html>

 

The form might appear this way:

Blog Sample Page

This HTML could then invoke a PHP script that looks something like this:

<? php

  ... receive incoming parameters ...

  $vQuery = "SELECT FIRST_NAME, LAST_NAME FROM CUSTOMERS ORDER BY LAST_NAME"
  if (parm_OrderBy == "DESC")
    $vQuery .= " DESC";

  ... run query ...

?>

The idea is that the PHP script is bulding a text string in the $vQuery variable that may or may not include DESC after the ORDER BY, based on the value selected in the HTML form.

This is obviously just a very simple example.  You can use much more complex code structures to build a variety of SQL statements, including SQL statements that may or may not include joins, GROUP BY clauses, and more.  It’s just a matter of building text strings based on input, nothing more.

So that’s it!  Now you know what dynamic SQL is about.

Happy developing!

Leave a Reply