{"id":188,"date":"2007-09-21T15:23:33","date_gmt":"2007-09-21T14:23:33","guid":{"rendered":"http:\/\/bar-solutions.com\/wordpress\/?p=188"},"modified":"2007-09-21T15:23:33","modified_gmt":"2007-09-21T14:23:33","slug":"functions-as-default-values","status":"publish","type":"post","link":"https:\/\/blog.bar-solutions.com\/?p=188","title":{"rendered":"Functions as default values&#8230;"},"content":{"rendered":"<p>If you have a program with parameters that have default values and you want the user to be able to change the default values of the parameters, without you having to change the value in the code, then put that data in a table.<\/p>\n<p>Why shouldn&#8217;t you just retrieve the data from the table in the program? One reason could be that the program must also be able to be called with a value different from what&#8217;s in the table. That is, if the program is called without the parameter, it uses the default value, which is retrieved from a table. If the program is called with the parameter it can use this value, instead of the default value.<\/p>\n<p><!--more--><\/p>\n<\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:4b00db97-8ba1-421a-8260-33e0814e5134\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px\">\n<pre style=\"background-color:White;;overflow: auto;;font-family:Microsoft Sans Serif;font-size:12\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #008080; \">--<\/span><span style=\"color: #008080; \"> Create table<\/span><span style=\"color: #008080; \">\n<\/span><span style=\"color: #0000FF; \">create<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">table<\/span><span style=\"color: #000000; \"> DefaultValues\n(\n  def_id      <\/span><span style=\"color: #000000; font-weight: bold; \">number<\/span><span style=\"color: #000000; \">,\n  def_number  <\/span><span style=\"color: #000000; font-weight: bold; \">number<\/span><span style=\"color: #000000; \">,\n  def_string  <\/span><span style=\"color: #000000; font-weight: bold; \">varchar2<\/span><span style=\"color: #000000; \">(<\/span><span style=\"color: #800000; font-weight: bold; \">4000<\/span><span style=\"color: #000000; \">),\n  def_date    date,\n  def_boolean <\/span><span style=\"color: #000000; font-weight: bold; \">number<\/span><span style=\"color: #000000; \">(<\/span><span style=\"color: #800000; font-weight: bold; \">1<\/span><span style=\"color: #000000; \">)\n)\n;\n<\/span><span style=\"color: #008080; \">--<\/span><span style=\"color: #008080; \"> Add comments to the columns <\/span><span style=\"color: #008080; \">\n<\/span><span style=\"color: #000000; \">comment <\/span><span style=\"color: #0000FF; \">on<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">column<\/span><span style=\"color: #000000; \"> DefaultValues.def_id <\/span><span style=\"color: #0000FF; \">is<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Default ID<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">;\ncomment <\/span><span style=\"color: #0000FF; \">on<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">column<\/span><span style=\"color: #000000; \"> DefaultValues.def_number <\/span><span style=\"color: #0000FF; \">is<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Default number<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">;\ncomment <\/span><span style=\"color: #0000FF; \">on<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">column<\/span><span style=\"color: #000000; \"> DefaultValues.def_string <\/span><span style=\"color: #0000FF; \">is<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Default string<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">;\ncomment <\/span><span style=\"color: #0000FF; \">on<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">column<\/span><span style=\"color: #000000; \"> DefaultValues.def_date <\/span><span style=\"color: #0000FF; \">is<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Default date<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">;\ncomment <\/span><span style=\"color: #0000FF; \">on<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">column<\/span><span style=\"color: #000000; \"> DefaultValues.def_boolean <\/span><span style=\"color: #0000FF; \">is<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Default boolean<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #008080; \">--<\/span><span style=\"color: #008080; \"> Create\/Recreate primary, unique and foreign key constraints <\/span><span style=\"color: #008080; \">\n<\/span><span style=\"color: #0000FF; \">alter<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">table<\/span><span style=\"color: #000000; \"> DefaultValues <\/span><span style=\"color: #0000FF; \">add<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">constraint<\/span><span style=\"color: #000000; \"> pk_def_id <\/span><span style=\"color: #0000FF; \">primary<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">key<\/span><span style=\"color: #000000; \"> (DEF_ID);<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<\/p>\n<p>Generate and install&nbsp;the <a title=\"QCGU: Quest CodeGen Utility.\" href=\"http:\/\/www.qcgu.net\/plsql.php\" target=\"_blank\">QDA<\/a> packages for this new table so they can be used. Then we create a package that retrieves the values from the table.<\/p>\n<\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:85ddcf7c-18f2-43b7-b53f-3841c67dd235\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 380px; padding-top: 0px\">\n<pre style=\"background-color:White;;overflow: hidden;;font-family:Microsoft Sans Serif;font-size:11.25\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #0000FF; \">CREATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">REPLACE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">PACKAGE<\/span><span style=\"color: #000000; \"> defaultvalues_dp\n<\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Author  : PBAREL<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Created : 06\/09\/2007 18:21:14<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Purpose : Get the default values for functions<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Public function and procedure declarations<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_number\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.def_number_t;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_string\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.def_string_t;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_date\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.def_date_t;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_boolean\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BOOLEAN<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> defaultvalues_dp;\n<\/span><span style=\"color: #000000; \">\/<\/span><span style=\"color: #000000; \">\n<\/span><span style=\"color: #0000FF; \">CREATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">REPLACE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">PACKAGE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BODY<\/span><span style=\"color: #000000; \"> defaultvalues_dp\n<\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Private constant declarations<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  c_true                          <\/span><span style=\"color: #0000FF; \">CONSTANT<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">PLS_INTEGER<\/span><span style=\"color: #000000; \"> :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800080; \">1<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Function and procedure implementations<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> getdefaultvalues\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.defaultvalues_rt\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n    tc_defaultvalues                         defaultvalues_tp.defaultvalues_tc;\n    rc_defaultvalues                         defaultvalues_tp.defaultvalues_rt;\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    tc_defaultvalues   :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> defaultvalues_qp.allrows;\n    rc_defaultvalues   :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> tc_defaultvalues( tc_defaultvalues.FIRST );\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> rc_defaultvalues;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> getdefaultvalues;\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> initialization\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    <\/span><span style=\"color: #0000FF; \">NULL<\/span><span style=\"color: #000000; \">;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> initialization;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_number\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.def_number_t\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n    lv_returnvalue                           defaultvalues_tp.def_number_t;\n    rt_defaultvalues                         defaultvalues_tp.defaultvalues_rt;\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    rt_defaultvalues   :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> getdefaultvalues;\n    lv_returnvalue     :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> rt_defaultvalues.def_number;\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> lv_returnvalue;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_string\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.def_string_t\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n    lv_returnvalue                           defaultvalues_tp.def_string_t;\n    rt_defaultvalues                         defaultvalues_tp.defaultvalues_rt;\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    rt_defaultvalues   :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> getdefaultvalues;\n    lv_returnvalue     :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> rt_defaultvalues.def_string;\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> lv_returnvalue;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_date\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> defaultvalues_tp.def_date_t\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n    lv_returnvalue                           defaultvalues_tp.def_date_t;\n    rt_defaultvalues                         defaultvalues_tp.defaultvalues_rt;\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    rt_defaultvalues   :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> getdefaultvalues;\n    lv_returnvalue     :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> rt_defaultvalues.def_date;\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> lv_returnvalue;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #0000FF; \">FUNCTION<\/span><span style=\"color: #000000; \"> get_def_boolean\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BOOLEAN<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n    lv_returnvalue                           <\/span><span style=\"color: #0000FF; \">BOOLEAN<\/span><span style=\"color: #000000; \">;\n    rt_defaultvalues                         defaultvalues_tp.defaultvalues_rt;\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    rt_defaultvalues   :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> getdefaultvalues;\n    lv_returnvalue     :<\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> rt_defaultvalues.def_boolean <\/span><span style=\"color: #000000; \">=<\/span><span style=\"color: #000000; \"> c_true;\n    <\/span><span style=\"color: #0000FF; \">RETURN<\/span><span style=\"color: #000000; \"> lv_returnvalue;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n  initialization;\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> defaultvalues_dp;\n\n<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<p>Now it&#8217;s time for our usage package. <\/p>\n<\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:66806b7c-8b52-4371-9454-343a3502c5ed\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px\">\n<pre style=\"background-color:White;;overflow: auto;;font-family:Microsoft Sans Serif;font-size:11.25\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #0000FF; \">CREATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">REPLACE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">PACKAGE<\/span><span style=\"color: #000000; \"> defaultusage\n<\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Author  : PBAREL<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Created : 06\/09\/2007 18:40:19<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Purpose : usage of the functions as default parameters<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Public function and procedure declarations<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> shownumber(\n    number_in                      <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">NUMBER<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_number );\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> showstring(\n    string_in                      <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">VARCHAR2<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_string );\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> showdate(\n    date_in                        <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">DATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_date );\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> showboolean(\n    boolean_in                     <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">BOOLEAN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_boolean );\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> defaultusage;\n<\/span><span style=\"color: #000000; \">\/<\/span><span style=\"color: #000000; \">\n<\/span><span style=\"color: #0000FF; \">CREATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">OR<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">REPLACE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">PACKAGE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">BODY<\/span><span style=\"color: #000000; \"> defaultusage\n<\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Private type declarations<\/span><span style=\"color: #008000; \">\n--<\/span><span style=\"color: #008000; \">  type &lt;TypeName&gt; is &lt;Datatype&gt;;<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Private constant declarations<\/span><span style=\"color: #008000; \">\n--<\/span><span style=\"color: #008000; \">  &lt;ConstantName&gt; constant &lt;Datatype&gt; := &lt;Value&gt;;<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Private variable declarations<\/span><span style=\"color: #008000; \">\n--<\/span><span style=\"color: #008000; \">  &lt;VariableName&gt; &lt;Datatype&gt;;<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #008000; \">--<\/span><span style=\"color: #008000; \"> Function and procedure implementations<\/span><span style=\"color: #008000; \">\n<\/span><span style=\"color: #000000; \">  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> initialization\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    <\/span><span style=\"color: #0000FF; \">NULL<\/span><span style=\"color: #000000; \">;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> initialization;\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> shownumber(\n    number_in                      <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">NUMBER<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_number )\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    DBMS_OUTPUT.put_line( TO_CHAR( number_in ));\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> showstring(\n    string_in                      <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">VARCHAR2<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_string )\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    DBMS_OUTPUT.put_line( string_in );\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> showdate(\n    date_in                        <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">DATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_date )\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    DBMS_OUTPUT.put_line( TO_CHAR( date_in, <\/span><span style=\"color: #800000; \">'<\/span><span style=\"color: #800000; \">MMDDYYYY<\/span><span style=\"color: #800000; \">'<\/span><span style=\"color: #000000; \"> ));\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n\n  <\/span><span style=\"color: #0000FF; \">PROCEDURE<\/span><span style=\"color: #000000; \"> showboolean(\n    boolean_in                     <\/span><span style=\"color: #0000FF; \">IN<\/span><span style=\"color: #000000; \">      <\/span><span style=\"color: #0000FF; \">BOOLEAN<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">DEFAULT<\/span><span style=\"color: #000000; \"> defaultvalues_dp.get_def_boolean )\n  <\/span><span style=\"color: #0000FF; \">IS<\/span><span style=\"color: #000000; \">\n  <\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n    <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \"> boolean_in <\/span><span style=\"color: #0000FF; \">THEN<\/span><span style=\"color: #000000; \">\n      DBMS_OUTPUT.put_line( <\/span><span style=\"color: #800000; \">'<\/span><span style=\"color: #800000; \">TRUE<\/span><span style=\"color: #800000; \">'<\/span><span style=\"color: #000000; \"> );\n    <\/span><span style=\"color: #0000FF; \">ELSE<\/span><span style=\"color: #000000; \">\n      DBMS_OUTPUT.put_line( <\/span><span style=\"color: #800000; \">'<\/span><span style=\"color: #800000; \">FALSE<\/span><span style=\"color: #800000; \">'<\/span><span style=\"color: #000000; \"> );\n    <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">IF<\/span><span style=\"color: #000000; \">;\n  <\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #0000FF; \">BEGIN<\/span><span style=\"color: #000000; \">\n  initialization;\n<\/span><span style=\"color: #0000FF; \">END<\/span><span style=\"color: #000000; \"> defaultusage;\n<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<\/p>\n<p>And then of course a small demonstration script of the usage of this functionality.<\/p>\n<\/p>\n<div class=\"wlWriterSmartContent\" id=\"57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:4a20cf69-aed9-47e2-877e-55252a36b2a8\" contenteditable=\"false\" style=\"padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px\">\n<pre style=\"background-color:White;;overflow: auto;;font-family:Microsoft Sans Serif;font-size:11.25\"><div><!--\n\nCode highlighting produced by Actipro CodeHighlighter (freeware)\nhttp:\/\/www.CodeHighlighter.com\/\n\n--><span style=\"color: #0000FF; \">SET<\/span><span style=\"color: #000000; \"> SERVEROUTPUT <\/span><span style=\"color: #0000FF; \">ON<\/span><span style=\"color: #000000; \">\n<\/span><span style=\"color: #0000FF; \">SET<\/span><span style=\"color: #000000; \"> FEEDBACK <\/span><span style=\"color: #0000FF; \">OFF<\/span><span style=\"color: #000000; \">\n<\/span><span style=\"color: #0000FF; \">TRUNCATE<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">TABLE<\/span><span style=\"color: #000000; \"> defaultvalues;\n<\/span><span style=\"color: #0000FF; \">INSERT<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #0000FF; \">INTO<\/span><span style=\"color: #000000; \"> defaultvalues(def_id, def_number, def_string, def_date, def_boolean)\n  <\/span><span style=\"color: #0000FF; \">VALUES<\/span><span style=\"color: #000000; \"> (<\/span><span style=\"color: #800000; font-weight: bold; \">1<\/span><span style=\"color: #000000; \">,<\/span><span style=\"color: #800000; font-weight: bold; \">2912<\/span><span style=\"color: #000000; \">,<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Patrick<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">,to_date(<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">12291972<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">,<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">MMDDYYYY<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">),<\/span><span style=\"color: #800000; font-weight: bold; \">1<\/span><span style=\"color: #000000; \">);\n<\/span><span style=\"color: #0000FF; \">COMMIT<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #008080; \">--<\/span><span style=\"color: #008080; \"> first: default usage<\/span><span style=\"color: #008080; \">\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.shownumber;\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showstring;\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showdate;\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showboolean;\n<\/span><span style=\"color: #008080; \">--<\/span><span style=\"color: #008080; \"> next: overridden usage<\/span><span style=\"color: #008080; \">\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.shownumber(<\/span><span style=\"color: #800000; font-weight: bold; \">1<\/span><span style=\"color: #000000; \">);\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showstring(<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Bar Solutions<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">);\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showdate(to_date(<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">20070101<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">,<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">YYYYMMDD<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">));\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showboolean(sys.diutil.int_to_bool(<\/span><span style=\"color: #800000; font-weight: bold; \">0<\/span><span style=\"color: #000000; \">));\n<\/span><span style=\"color: #0000FF; \">UPDATE<\/span><span style=\"color: #000000; \"> defaultvalues\n   <\/span><span style=\"color: #0000FF; \">SET<\/span><span style=\"color: #000000; \"> def_number <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800000; font-weight: bold; \">0306<\/span><span style=\"color: #000000; \">\n     , def_string <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">Dana<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">\n     , def_date <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> to_date(<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">03061976<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">,<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #FF0000; \">MMDDYYYY<\/span><span style=\"color: #FF0000; \">'<\/span><span style=\"color: #000000; \">)\n     , def_boolean <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800000; font-weight: bold; \">0<\/span><span style=\"color: #000000; \">\n <\/span><span style=\"color: #0000FF; \">WHERE<\/span><span style=\"color: #000000; \"> def_id <\/span><span style=\"color: #808080; \">=<\/span><span style=\"color: #000000; \"> <\/span><span style=\"color: #800000; font-weight: bold; \">1<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #0000FF; \">COMMIT<\/span><span style=\"color: #000000; \">;\n<\/span><span style=\"color: #008080; \">--<\/span><span style=\"color: #008080; \"> again: default usage, but this time with new values<\/span><span style=\"color: #008080; \">\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.shownumber;\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showstring;\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showdate;\n<\/span><span style=\"color: #0000FF; \">EXEC<\/span><span style=\"color: #000000; \"> defaultusage.showboolean;\n<\/span><\/div><\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http:\/\/dunnhq.com --><\/div>\n<\/p>\n<p>As you can see, if you don&#8217;t provide any value for&nbsp;the parameter then the default value is being used (from the table) which can be anything depending on what&#8217;s in the table at that time. But you can still override the values if needed.<\/p>\n<p>Unfortunately this method cannot be used to define a default on a column in a table, which is kinda strange when you consider that <em>user<\/em> in SQL is actually a function call, as is <em>sysdate<\/em>. Check the standard.sql (or&nbsp;stdspec.sql and stdbody.sql) in the RDBMS\\ADMIN folder. Maybe it&#8217;s some kind of special PRAGMA that needs to be set. Something to try out sometime or maybe&nbsp;a restriction&nbsp;Oracle should lift.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you have a program with parameters that have default values and you want the user to be able to change the default values of the parameters, without you having to change the value in the code, then put that data in a table. Why shouldn&#8217;t you just retrieve the data from the table in [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,2,5],"tags":[],"class_list":["post-188","post","type-post","status-publish","format-standard","hentry","category-codegen","category-oracle","category-plsql"],"_links":{"self":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/posts\/188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=188"}],"version-history":[{"count":0,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=\/wp\/v2\/posts\/188\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bar-solutions.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}