<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>tmudr: tmudr::ComparisonPredicateInfo Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><b>tmudr</b>::<a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html">ComparisonPredicateInfo</a>
  </div>
</div>
<div class="contents">
<h1>tmudr::ComparisonPredicateInfo Class Reference</h1><!-- doxytag: class="tmudr::ComparisonPredicateInfo" --><!-- doxytag: inherits="tmudr::PredicateInfo" -->
<p>A comparison predicate to be evaluated on a table.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="sqludr_8h_source.html">sqludr.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for tmudr::ComparisonPredicateInfo:</div>
<div class="dynsection">
 <div class="center">
  <img src="classtmudr_1_1ComparisonPredicateInfo.gif" usemap="#tmudr::ComparisonPredicateInfo_map" alt=""/>
  <map id="tmudr::ComparisonPredicateInfo_map" name="tmudr::ComparisonPredicateInfo_map">
<area href="classtmudr_1_1PredicateInfo.html" alt="tmudr::PredicateInfo" shape="rect" coords="0,0,191,24"/>
</map>
 </div>
</div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html#ac25f0e26029a86b884c719d571ec8b1e">getColumnNumber</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html#a79b249f4d7719b7fb2348c50b5dd3f33">hasAConstantValue</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html#a4f49fa3520e789ba5f14e722ba1caec7">getConstValue</a> () const </td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A comparison predicate to be evaluated on a table. </p>
<p>A predicate that compares a column value to a constant or another value that evaluates to a constant at runtime, like an SQL query parameter. </p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ac25f0e26029a86b884c719d571ec8b1e"></a><!-- doxytag: member="tmudr::ComparisonPredicateInfo::getColumnNumber" ref="ac25f0e26029a86b884c719d571ec8b1e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ComparisonPredicateInfo::getColumnNumber </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get the column number of the column in this comparison predicate.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>Column number. </dd></dl>

</div>
</div>
<a class="anchor" id="a4f49fa3520e789ba5f14e722ba1caec7"></a><!-- doxytag: member="tmudr::ComparisonPredicateInfo::getConstValue" ref="a4f49fa3520e789ba5f14e722ba1caec7" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::string ComparisonPredicateInfo::getConstValue </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return the value, as a string, of the constant in this predicate.</p>
<p>This returns the value, using SQL syntax, of the constant involved in the comparison predicate. It throws an exception if method <a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html#a79b249f4d7719b7fb2348c50b5dd3f33">hasAConstantValue()</a> would return false.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classtmudr_1_1ComparisonPredicateInfo.html#a79b249f4d7719b7fb2348c50b5dd3f33">hasAConstantValue()</a></dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>Value of the constant in this comparison predicate. </dd></dl>
<dl><dt><b>Exceptions:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="classtmudr_1_1UDRException.html" title="This is the exception to throw when an error occurs in a UDR.">UDRException</a></em>&nbsp;</td><td></td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a79b249f4d7719b7fb2348c50b5dd3f33"></a><!-- doxytag: member="tmudr::ComparisonPredicateInfo::hasAConstantValue" ref="a79b249f4d7719b7fb2348c50b5dd3f33" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool ComparisonPredicateInfo::hasAConstantValue </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return whether this comparison value involves a constant.</p>
<p>The method returns whether the comparison predicate is of the form "column" "op" "constant". If it returns false, the predicate compares the column with a parameter or some other value not available to the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a>. Predicates that do not involve a constant cannot be evaluated in the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a> itself, since the comparison value is not available to the <a class="el" href="classtmudr_1_1UDR.html" title="This class represents the code associated with a UDR.">UDR</a>. They can be evaluated on a table-valued input, however.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the comparison is with a constant, false otherwise </dd></dl>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="sqludr_8h_source.html">sqludr.h</a></li>
<li>sqludr.cpp</li>
</ul>
</div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"/><address style="text-align: right;"><small>Generated on 3 Mar 2017 for tmudr by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>
