<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FFunction_Procedure_Packages%2FUtility_Function</id>
		<title>Oracle PL/SQL Tutorial/Function Procedure Packages/Utility Function - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FFunction_Procedure_Packages%2FUtility_Function"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Function&amp;action=history"/>
		<updated>2026-06-22T16:27:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Function&amp;diff=4408&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Function&amp;diff=4408&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Function&amp;diff=4409&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Function_Procedure_Packages/Utility_Function&amp;diff=4409&amp;oldid=prev"/>
				<updated>2010-05-26T10:11:51Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Add day to month==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2      FUNCTION my_add_months (date_in IN DATE, months_shift IN NUMBER)&lt;br /&gt;
  3          RETURN DATE IS date_out DATE;&lt;br /&gt;
  4              day_in NUMBER;&lt;br /&gt;
  5              day_out NUMBER;&lt;br /&gt;
  6      BEGIN&lt;br /&gt;
  7          date_out := ADD_MONTHS(date_in, months_shift);&lt;br /&gt;
  8          day_in := TO_NUMBER(TO_CHAR(date_in,&amp;quot;DD&amp;quot;));&lt;br /&gt;
  9          day_out := TO_NUMBER(TO_CHAR(date_out,&amp;quot;DD&amp;quot;));&lt;br /&gt;
 10          IF day_out &amp;gt; day_in&lt;br /&gt;
 11          THEN&lt;br /&gt;
 12              date_out := date_out - (day_out - day_in);&lt;br /&gt;
 13          END IF;&lt;br /&gt;
 14&lt;br /&gt;
 15          RETURN date_out;&lt;br /&gt;
 16      END;&lt;br /&gt;
 17  BEGIN&lt;br /&gt;
 18      DBMS_OUTPUT.PUT_LINE(TO_CHAR(my_add_months(&lt;br /&gt;
 19          TO_DATE(&amp;quot;31-Jan-2002 13:14:15&amp;quot;,&amp;quot;dd-mon-yyyy hh24:mi:ss&amp;quot;),1),&lt;br /&gt;
 20          &amp;quot;dd-Mon-yyyy hh24:mi:ss&amp;quot;));&lt;br /&gt;
 21&lt;br /&gt;
 22      DBMS_OUTPUT.PUT_LINE(TO_CHAR(my_add_months(&lt;br /&gt;
 23          TO_DATE(&amp;quot;28-Feb-2002 13:14:15&amp;quot;,&amp;quot;dd-mon-yyyy hh24:mi:ss&amp;quot;),1),&lt;br /&gt;
 24          &amp;quot;dd-Mon-yyyy hh24:mi:ss&amp;quot;));&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Compare date offset in a function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION is_overdue (due_date IN DATE,paid_date IN DATE)&lt;br /&gt;
  2     RETURN BOOLEAN&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     days_between NUMBER (2) := due_date - paid_date;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6     RETURN days_between &amp;gt; 30;&lt;br /&gt;
  7  EXCEPTION&lt;br /&gt;
  8     WHEN OTHERS&lt;br /&gt;
  9     THEN&lt;br /&gt;
 10        DBMS_OUTPUT.put_line (&amp;quot;Error in is_overdue; Check input data.&amp;quot;);&lt;br /&gt;
 11  END;&lt;br /&gt;
 12  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Convert Comma-separated values to table collection==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type myTableType&lt;br /&gt;
  2  as table of number;&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace&lt;br /&gt;
  2  function str2tbl( p_str in varchar2 ) return myTableType&lt;br /&gt;
  3  as&lt;br /&gt;
  4      l_str   long default p_str || &amp;quot;,&amp;quot;;&lt;br /&gt;
  5      l_n        number;&lt;br /&gt;
  6      l_data    myTableType := myTabletype();&lt;br /&gt;
  7  begin&lt;br /&gt;
  8      loop&lt;br /&gt;
  9          l_n := instr( l_str, &amp;quot;,&amp;quot; );&lt;br /&gt;
 10          exit when (nvl(l_n,0) = 0);&lt;br /&gt;
 11          l_data.extend;&lt;br /&gt;
 12          l_data( l_data.count ) :=&lt;br /&gt;
 13              ltrim(rtrim(substr(l_str, 1, l_n - 1)));&lt;br /&gt;
 14          l_str := substr( l_str, l_n+1 );&lt;br /&gt;
 15      end loop;&lt;br /&gt;
 16      return l_data;&lt;br /&gt;
 17  end;&lt;br /&gt;
 18  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; variable bind_variable varchar2(30)&lt;br /&gt;
SQL&amp;gt; exec :bind_variable := &amp;quot;1,3,5,7,99&amp;quot;&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
&lt;br /&gt;
BIND_VARIABLE&lt;br /&gt;
--------------------------------&lt;br /&gt;
1,3,5,7,99&lt;br /&gt;
SQL&amp;gt; select * from TABLE ( cast ( str2tbl(:bind_variable) as myTableType ) )&lt;br /&gt;
  2  /&lt;br /&gt;
&lt;br /&gt;
COLUMN_VALUE&lt;br /&gt;
------------&lt;br /&gt;
           1&lt;br /&gt;
           3&lt;br /&gt;
           5&lt;br /&gt;
           7&lt;br /&gt;
          99&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type myTableType;&lt;br /&gt;
Type dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Create a procedure to count employees==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table employees(&lt;br /&gt;
  2    empno      NUMBER(4)&lt;br /&gt;
  3  , ename      VARCHAR2(8)&lt;br /&gt;
  4  , init       VARCHAR2(5)&lt;br /&gt;
  5  , job        VARCHAR2(8)&lt;br /&gt;
  6  , mgr        NUMBER(4)&lt;br /&gt;
  7  , bdate      DATE&lt;br /&gt;
  8  , msal       NUMBER(6,2)&lt;br /&gt;
  9  , comm       NUMBER(6,2)&lt;br /&gt;
 10  , deptno     NUMBER(2) ) ;&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employees values(1,&amp;quot;Jason&amp;quot;,  &amp;quot;N&amp;quot;,  &amp;quot;TRAINER&amp;quot;, 2,   date &amp;quot;1965-12-18&amp;quot;,  800 , NULL,  10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(2,&amp;quot;Jerry&amp;quot;,  &amp;quot;J&amp;quot;,  &amp;quot;SALESREP&amp;quot;,3,   date &amp;quot;1966-11-19&amp;quot;,  1600, 300,   10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(3,&amp;quot;Jord&amp;quot;,   &amp;quot;T&amp;quot; , &amp;quot;SALESREP&amp;quot;,4,   date &amp;quot;1967-10-21&amp;quot;,  1700, 500,   20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(4,&amp;quot;Mary&amp;quot;,   &amp;quot;J&amp;quot;,  &amp;quot;MANAGER&amp;quot;, 5,   date &amp;quot;1968-09-22&amp;quot;,  1800, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(5,&amp;quot;Joe&amp;quot;,    &amp;quot;P&amp;quot;,  &amp;quot;SALESREP&amp;quot;,6,   date &amp;quot;1969-08-23&amp;quot;,  1900, 1400,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(6,&amp;quot;Black&amp;quot;,  &amp;quot;R&amp;quot;,  &amp;quot;MANAGER&amp;quot;, 7,   date &amp;quot;1970-07-24&amp;quot;,  2000, NULL,  30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(7,&amp;quot;Red&amp;quot;,    &amp;quot;A&amp;quot;,  &amp;quot;MANAGER&amp;quot;, 8,   date &amp;quot;1971-06-25&amp;quot;,  2100, NULL,  40);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(8,&amp;quot;White&amp;quot;,  &amp;quot;S&amp;quot;,  &amp;quot;TRAINER&amp;quot;, 9,   date &amp;quot;1972-05-26&amp;quot;,  2200, NULL,  40);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(9,&amp;quot;Yellow&amp;quot;, &amp;quot;C&amp;quot;,  &amp;quot;DIRECTOR&amp;quot;,10,  date &amp;quot;1973-04-27&amp;quot;,  2300, NULL,  20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into employees values(10,&amp;quot;Pink&amp;quot;,  &amp;quot;J&amp;quot;,  &amp;quot;SALESREP&amp;quot;,null,date &amp;quot;1974-03-28&amp;quot;,  2400, 0,     30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace function emp_count(p_deptno in number)&lt;br /&gt;
  2  return number is&lt;br /&gt;
  3         cnt number(2) := 0;&lt;br /&gt;
  4  begin&lt;br /&gt;
  5         select count(*)  into cnt&lt;br /&gt;
  6         from   employees e&lt;br /&gt;
  7         where  e.deptno = p_deptno;&lt;br /&gt;
  8         return (cnt);&lt;br /&gt;
  9  end;&lt;br /&gt;
 10  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select empno, ename&lt;br /&gt;
  2  ,      emp_count(empno)&lt;br /&gt;
  3  from   employees;&lt;br /&gt;
     EMPNO ENAME    EMP_COUNT(EMPNO)&lt;br /&gt;
---------- -------- ----------------&lt;br /&gt;
         1 Jason                   0&lt;br /&gt;
         2 Jerry                   0&lt;br /&gt;
         3 Jord                    0&lt;br /&gt;
         4 Mary                    0&lt;br /&gt;
         5 Joe                     0&lt;br /&gt;
         6 Black                   0&lt;br /&gt;
         7 Red                     0&lt;br /&gt;
         8 White                   0&lt;br /&gt;
         9 Yellow                  0&lt;br /&gt;
        10 Pink                    2&lt;br /&gt;
10 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employees;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Date calculation: business days between==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION bizdays_between (&lt;br /&gt;
  2     start_date IN DATE, end_date IN DATE)&lt;br /&gt;
  3     RETURN INTEGER&lt;br /&gt;
  4  IS&lt;br /&gt;
  5     v_sundays INTEGER :=&lt;br /&gt;
  6       NEXT_DAY (end_date - 7, &amp;quot;SUNDAY&amp;quot;) -&lt;br /&gt;
  7       NEXT_DAY (start_date - 1, &amp;quot;SUNDAY&amp;quot;);&lt;br /&gt;
  8&lt;br /&gt;
  9     v_saturdays INTEGER :=&lt;br /&gt;
 10       NEXT_DAY (end_date - 7, &amp;quot;SATURDAY&amp;quot;) -&lt;br /&gt;
 11       NEXT_DAY (start_date - 1, &amp;quot;SATURDAY&amp;quot;);&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13     RETURN (&lt;br /&gt;
 14        end_date -&lt;br /&gt;
 15        start_date -&lt;br /&gt;
 16        (v_sundays + v_saturdays)/7 -&lt;br /&gt;
 17        1&lt;br /&gt;
 18        );&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Date time calculation function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION expiration_date (&lt;br /&gt;
  2      good_for_period_in IN INTERVAL YEAR TO MONTH&lt;br /&gt;
  3  )&lt;br /&gt;
  4      RETURN TIMESTAMP&lt;br /&gt;
  5  IS&lt;br /&gt;
  6     bad_month EXCEPTION;&lt;br /&gt;
  7     PRAGMA EXCEPTION_INIT (bad_month, -1839);&lt;br /&gt;
  8&lt;br /&gt;
  9     todays_date TIMESTAMP;&lt;br /&gt;
 10     result_date TIMESTAMP;&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12     todays_date := TRUNC(SYSTIMESTAMP);&lt;br /&gt;
 13     LOOP&lt;br /&gt;
 14        BEGIN&lt;br /&gt;
 15           result_date := todays_date + good_for_period_in;&lt;br /&gt;
 16        EXCEPTION&lt;br /&gt;
 17           WHEN bad_month THEN&lt;br /&gt;
 18              todays_date := todays_date - INTERVAL &amp;quot;1&amp;quot; DAY;&lt;br /&gt;
 19           WHEN OTHERS THEN&lt;br /&gt;
 20              RAISE;&lt;br /&gt;
 21        END;&lt;br /&gt;
 22&lt;br /&gt;
 23        EXIT WHEN result_date IS NOT NULL;&lt;br /&gt;
 24     END LOOP;&lt;br /&gt;
 25     RETURN result_date;&lt;br /&gt;
 26  END;&lt;br /&gt;
 27  /&lt;br /&gt;
Function created.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Define your own varchar to date function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION my_to_date (value_in IN VARCHAR2)&lt;br /&gt;
  2     RETURN DATE&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     TYPE mask_t IS TABLE OF VARCHAR2 (30)INDEX BY BINARY_INTEGER;&lt;br /&gt;
  5&lt;br /&gt;
  6     fmts             mask_t;&lt;br /&gt;
  7     retval           DATE    := NULL;&lt;br /&gt;
  8&lt;br /&gt;
  9     mask_index       INTEGER := 1;&lt;br /&gt;
 10&lt;br /&gt;
 11     date_converted   BOOLEAN := FALSE;&lt;br /&gt;
 12&lt;br /&gt;
 13     PROCEDURE init_fmts&lt;br /&gt;
 14     IS&lt;br /&gt;
 15     BEGIN&lt;br /&gt;
 16        fmts (1) := &amp;quot;DD-MON-RR&amp;quot;;&lt;br /&gt;
 17        fmts (2) := &amp;quot;DD-MON-YYYY&amp;quot;;&lt;br /&gt;
 18        fmts (3) := &amp;quot;DD-MON&amp;quot;;&lt;br /&gt;
 19        fmts (4) := &amp;quot;MM/DD&amp;quot;;&lt;br /&gt;
 20        fmts (5) := &amp;quot;MM/RR&amp;quot;;&lt;br /&gt;
 21        fmts (6) := &amp;quot;MMDDRR&amp;quot;;&lt;br /&gt;
 22     END;&lt;br /&gt;
 23  BEGIN&lt;br /&gt;
 24     init_fmts;&lt;br /&gt;
 25&lt;br /&gt;
 26     WHILE  mask_index IS NOT NULL AND NOT date_converted&lt;br /&gt;
 27     LOOP&lt;br /&gt;
 28        BEGIN&lt;br /&gt;
 29           retval := TO_DATE (value_in, fmts (mask_index));&lt;br /&gt;
 30           date_converted := TRUE;&lt;br /&gt;
 31        EXCEPTION&lt;br /&gt;
 32           WHEN OTHERS&lt;br /&gt;
 33           THEN&lt;br /&gt;
 34              mask_index := fmts.NEXT (mask_index);&lt;br /&gt;
 35&lt;br /&gt;
 36              IF mask_index IS NULL&lt;br /&gt;
 37              THEN&lt;br /&gt;
 38                 RAISE;&lt;br /&gt;
 39              END IF;&lt;br /&gt;
 40        END;&lt;br /&gt;
 41     END LOOP;&lt;br /&gt;
 42&lt;br /&gt;
 43     RETURN retval;&lt;br /&gt;
 44  END my_to_date;&lt;br /&gt;
 45  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Format money==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION format_money (p_value_num NUMBER)&lt;br /&gt;
  2     RETURN VARCHAR2 IS&lt;br /&gt;
  3     returnString VARCHAR2(100);&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     IF (p_value_num &amp;gt;= 1000000) THEN&lt;br /&gt;
  6        returnString := LTRIM(TO_CHAR(p_value_num, &amp;quot;$999,999,999.00&amp;quot;));&lt;br /&gt;
  7     ELSIF (p_value_num &amp;lt; 1000000) AND (p_value_num &amp;gt;= 1000) THEN&lt;br /&gt;
  8        returnString := LTRIM( TO_CHAR(p_value_num, &amp;quot;$999,999.00&amp;quot;));&lt;br /&gt;
  9     ELSE&lt;br /&gt;
 10        returnString := LTRIM(TO_CHAR(p_value_num, &amp;quot;$999.00&amp;quot;));&lt;br /&gt;
 11     END IF;&lt;br /&gt;
 12     RETURN returnString;&lt;br /&gt;
 13  EXCEPTION&lt;br /&gt;
 14     WHEN OTHERS THEN&lt;br /&gt;
 15        RAISE_APPLICATION_ERROR( -20123, &amp;quot;Error occurred in MONEY &amp;quot; ||&lt;br /&gt;
 16           &amp;quot;function for incoming value:&amp;quot; || TO_CHAR(p_value_num) ||&lt;br /&gt;
 17           &amp;quot; and outgoing value:&amp;quot; || returnString);&lt;br /&gt;
 18  END format_money;&lt;br /&gt;
 19  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Function to convert celsius to fahrenheit==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION celsius_to_fahrenheit (degree NUMBER) RETURN NUM&lt;br /&gt;
BER IS&lt;br /&gt;
  2      buffer NUMBER;&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4     buffer := (degree * 9/5) + 32;&lt;br /&gt;
  5     RETURN buffer;&lt;br /&gt;
  6  END celsius_to_fahrenheit;&lt;br /&gt;
  7  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Function to convert fahrenheit to celsius==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION fahrenheit_to_celsius (degree NUMBER) RETURN NUMBER IS&lt;br /&gt;
  2      buffer NUMBER;&lt;br /&gt;
  3&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     buffer := (5/9) * (degree - 32);&lt;br /&gt;
  6     RETURN buffer;&lt;br /&gt;
  7  END fahrenheit_to_celsius;&lt;br /&gt;
  8&lt;br /&gt;
  9  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Generic function utilizing dynamic SQL to return the number of rows in the specified table.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION tabcount (&lt;br /&gt;
  2     sch IN VARCHAR2,&lt;br /&gt;
  3     tab IN VARCHAR2)&lt;br /&gt;
  4     RETURN INTEGER&lt;br /&gt;
  5  IS&lt;br /&gt;
  6     cur     INTEGER  := DBMS_SQL.OPEN_CURSOR;&lt;br /&gt;
  7     ignore  INTEGER;&lt;br /&gt;
  8     retval  INTEGER;&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10     DBMS_SQL.PARSE (cur, &amp;quot;SELECT COUNT(*) FROM &amp;quot; || sch || &amp;quot;.&amp;quot; || tab, DBMS_SQL.NATIVE);&lt;br /&gt;
 11     DBMS_SQL.DEFINE_COLUMN (cur, 1, retval);&lt;br /&gt;
 12     ignore := DBMS_SQL.EXECUTE_AND_FETCH (cur);&lt;br /&gt;
 13     DBMS_SQL.COLUMN_VALUE (cur, 1, retval);&lt;br /&gt;
 14     DBMS_SQL.CLOSE_CURSOR (cur);&lt;br /&gt;
 15     RETURN retval;&lt;br /&gt;
 16  END;&lt;br /&gt;
 17  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Get circle area==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION circle_area (p_radius IN NUMBER) RETURN NUMBER AS&lt;br /&gt;
  2    v_pi   NUMBER := 3.1415926;&lt;br /&gt;
  3    v_area NUMBER;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5    v_area := v_pi * POWER(p_radius, 2);&lt;br /&gt;
  6    RETURN v_area;&lt;br /&gt;
  7  END circle_area;&lt;br /&gt;
  8  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Get nearest day==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION nearestday (yourdate IN DATE, dayname IN VARCHAR2)&lt;br /&gt;
  2     RETURN DATE&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     before_date DATE := NEXT_DAY (yourdate-7, dayname);&lt;br /&gt;
  5     after_date DATE := NEXT_DAY (yourdate, dayname);&lt;br /&gt;
  6&lt;br /&gt;
  7     before_diff NUMBER;&lt;br /&gt;
  8     after_diff NUMBER;&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10     before_diff := yourdate - before_date;&lt;br /&gt;
 11     after_diff := yourdate - after_date;&lt;br /&gt;
 12     IF before_diff &amp;lt; after_diff&lt;br /&gt;
 13     THEN&lt;br /&gt;
 14        RETURN before_date;&lt;br /&gt;
 15     ELSE&lt;br /&gt;
 16        RETURN after_date;&lt;br /&gt;
 17     END IF;&lt;br /&gt;
 18  END;&lt;br /&gt;
 19  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Get the Max date==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; DECLARE&lt;br /&gt;
  2     curr_date  DATE := SYSDATE;&lt;br /&gt;
  3     last_date  DATE;&lt;br /&gt;
  4     step       PLS_INTEGER := 1000;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6     LOOP&lt;br /&gt;
  7        BEGIN&lt;br /&gt;
  8           last_date := curr_date;&lt;br /&gt;
  9           curr_date := curr_date + step;&lt;br /&gt;
 10        EXCEPTION&lt;br /&gt;
 11           WHEN OTHERS&lt;br /&gt;
 12           THEN&lt;br /&gt;
 13              IF step = 1&lt;br /&gt;
 14              THEN&lt;br /&gt;
 15                 DBMS_OUTPUT.PUT_LINE (&amp;quot;Last date: &amp;quot; || TO_CHAR (last_date, &amp;quot;Month DD, YYYY&amp;quot;));&lt;br /&gt;
 16                 EXIT;&lt;br /&gt;
 17              ELSE&lt;br /&gt;
 18                 step := step / 2;&lt;br /&gt;
 19                 curr_date := last_date;&lt;br /&gt;
 20              END IF;&lt;br /&gt;
 21        END;&lt;br /&gt;
 22     END LOOP;&lt;br /&gt;
 23  END;&lt;br /&gt;
 24  /&lt;br /&gt;
Last date: December  31, 9999&lt;br /&gt;
PL/SQL procedure successfully completed.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Get the next business day==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace function next_business_day (p_days in number)&lt;br /&gt;
  2  return varchar&lt;br /&gt;
  3  is&lt;br /&gt;
  4    v_new_day varchar2(10);&lt;br /&gt;
  5    v_new_date date;&lt;br /&gt;
  6  begin&lt;br /&gt;
  7    v_new_day := to_char((sysdate + p_days), &amp;quot;fmDay&amp;quot;);&lt;br /&gt;
  8    v_new_date := sysdate + p_days ;&lt;br /&gt;
  9&lt;br /&gt;
 10    if v_new_day = &amp;quot;Saturday&amp;quot; then&lt;br /&gt;
 11       v_new_day := &amp;quot;Monday&amp;quot; ;&lt;br /&gt;
 12       v_new_date := v_new_date + 2 ;&lt;br /&gt;
 13    elsif v_new_day = &amp;quot;Sunday&amp;quot; then&lt;br /&gt;
 14       v_new_day := &amp;quot;Monday&amp;quot;;&lt;br /&gt;
 15       v_new_date := v_new_date + 1 ;&lt;br /&gt;
 16    end if;&lt;br /&gt;
 17&lt;br /&gt;
 18    return(v_new_day || &amp;quot; &amp;quot; || to_char(v_new_date,&amp;quot;mm/dd/yyyy&amp;quot;));&lt;br /&gt;
 19  end;&lt;br /&gt;
 20  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt; show errors&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- Test the next_business_day function:&lt;br /&gt;
SQL&amp;gt; select next_business_day(2) from dual;&lt;br /&gt;
NEXT_BUSINESS_DAY(2)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
Monday 07/28/2008&lt;br /&gt;
SQL&amp;gt; select next_business_day(200) from dual;&lt;br /&gt;
NEXT_BUSINESS_DAY(200)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
Monday 02/09/2009&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
////////////////////////////////////////////////&lt;br /&gt;
Unfortunately, your formula calculating number of business days between 2 dates has a defect.  If you take the same business date for start_date and end_date it will give the difference of 1 business day, which is wrong.&lt;br /&gt;
 &lt;br /&gt;
I would propose the following correction:&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION bizdays_between (&lt;br /&gt;
  2     start_date IN DATE, end_date IN DATE)&lt;br /&gt;
  3     RETURN INTEGER&lt;br /&gt;
  4  IS&lt;br /&gt;
  5     v_sundays INTEGER :=&lt;br /&gt;
  6       NEXT_DAY (end_date - 7, &amp;quot;SUNDAY&amp;quot;) -&lt;br /&gt;
  7       NEXT_DAY (start_date - 1, &amp;quot;SUNDAY&amp;quot;);&lt;br /&gt;
  8&lt;br /&gt;
  9     v_saturdays INTEGER :=&lt;br /&gt;
 10       NEXT_DAY (end_date - 7, &amp;quot;SATURDAY&amp;quot;) -&lt;br /&gt;
 11       NEXT_DAY (start_date - 1, &amp;quot;SATURDAY&amp;quot;);&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13     RETURN (&lt;br /&gt;
 14        end_date -&lt;br /&gt;
 15        start_date -&lt;br /&gt;
 16        abs(sign(end_date - start_date))*((v_sundays + v_saturdays)/7 -&lt;br /&gt;
 17        1)&lt;br /&gt;
 18        );&lt;br /&gt;
 19  END;&lt;br /&gt;
 20  /&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Sincerely,&lt;br /&gt;
Paul Filstein&lt;br /&gt;
paul.filstein at thehartford.ru&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Removes all numeric digits from the string passed in.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION number_stripper(p_string VARCHAR2) RETURN VARCHAR2&lt;br /&gt;
  2  IS&lt;br /&gt;
  3     v_current_element NUMBER;&lt;br /&gt;
  4     v_char_length NUMBER;&lt;br /&gt;
  5     v_ret_val VARCHAR2 (2000);&lt;br /&gt;
  6     v_current_char VARCHAR2 (1);&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8     v_char_length := LENGTH (p_string);&lt;br /&gt;
  9     v_current_element := 1;&lt;br /&gt;
 10&lt;br /&gt;
 11     LOOP&lt;br /&gt;
 12        EXIT WHEN v_current_element &amp;gt; v_char_length;&lt;br /&gt;
 13        v_current_char := SUBSTR (p_string, v_current_element, 1);&lt;br /&gt;
 14&lt;br /&gt;
 15        IF TRANSLATE (v_current_char, &amp;quot;1234567890&amp;quot;, &amp;quot;**********&amp;quot;) != &amp;quot;*&amp;quot;&lt;br /&gt;
 16           OR v_current_char = &amp;quot;~&amp;quot;&lt;br /&gt;
 17        THEN&lt;br /&gt;
 18           v_ret_val := v_ret_val || v_current_char;&lt;br /&gt;
 19        END IF;&lt;br /&gt;
 20&lt;br /&gt;
 21        v_current_element := v_current_element + 1;&lt;br /&gt;
 22     END LOOP;&lt;br /&gt;
 23&lt;br /&gt;
 24     RETURN (v_ret_val);&lt;br /&gt;
 25  END;&lt;br /&gt;
 26  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt; select number_stripper(&amp;quot;asdf123&amp;quot;) from dual;&lt;br /&gt;
NUMBER_STRIPPER(&amp;quot;ASDF123&amp;quot;)&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
asdf&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== String between function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION betweenString (&lt;br /&gt;
  2     string_in   IN   VARCHAR2,&lt;br /&gt;
  3     start_in    IN   INTEGER,&lt;br /&gt;
  4     end_in      IN   INTEGER,&lt;br /&gt;
  5     inclusive   IN   BOOLEAN := TRUE&lt;br /&gt;
  6  )&lt;br /&gt;
  7     RETURN VARCHAR2&lt;br /&gt;
  8  IS&lt;br /&gt;
  9     v_start      INTEGER := start_in;&lt;br /&gt;
 10     v_numchars   INTEGER := ABS (end_in) - ABS (start_in) + 1;&lt;br /&gt;
 11  BEGIN&lt;br /&gt;
 12     IF    string_in IS NULL&lt;br /&gt;
 13        OR NVL (start_in, 0) = 0&lt;br /&gt;
 14        OR (start_in &amp;lt; 0 AND end_in &amp;gt; 0)&lt;br /&gt;
 15        OR (start_in &amp;gt; 0 AND end_in &amp;lt; 0)&lt;br /&gt;
 16        OR (start_in &amp;lt; 0 AND end_in &amp;gt; start_in)&lt;br /&gt;
 17        OR (start_in &amp;gt; 0 AND end_in &amp;lt; start_in)&lt;br /&gt;
 18     THEN&lt;br /&gt;
 19        RETURN NULL;&lt;br /&gt;
 20     ELSE&lt;br /&gt;
 21        IF v_start &amp;lt; 0&lt;br /&gt;
 22        THEN&lt;br /&gt;
 23           v_start := end_in;&lt;br /&gt;
 24        ELSE&lt;br /&gt;
 25           v_start := start_in;&lt;br /&gt;
 26        END IF;&lt;br /&gt;
 27&lt;br /&gt;
 28        IF NOT NVL (inclusive, FALSE )&lt;br /&gt;
 29        THEN&lt;br /&gt;
 30           v_start := v_start + 1;&lt;br /&gt;
 31           v_numchars := v_numchars - 2;&lt;br /&gt;
 32        END IF;&lt;br /&gt;
 33&lt;br /&gt;
 34        IF v_start &amp;gt; end_in OR v_numchars &amp;lt; 1&lt;br /&gt;
 35        THEN&lt;br /&gt;
 36           RETURN NULL;&lt;br /&gt;
 37        ELSE&lt;br /&gt;
 38           RETURN (SUBSTR (string_in, v_start, v_numchars));&lt;br /&gt;
 39        END IF;&lt;br /&gt;
 40     END IF;&lt;br /&gt;
 41  END;&lt;br /&gt;
 42  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Table Count function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION tabCount (&lt;br /&gt;
  2     tab IN VARCHAR2,&lt;br /&gt;
  3     whr IN VARCHAR2 := NULL,&lt;br /&gt;
  4     sch IN VARCHAR2 := NULL)&lt;br /&gt;
  5     RETURN INTEGER&lt;br /&gt;
  6  IS&lt;br /&gt;
  7     retval INTEGER;&lt;br /&gt;
  8  BEGIN&lt;br /&gt;
  9     EXECUTE IMMEDIATE&lt;br /&gt;
 10        &amp;quot;SELECT COUNT(*)&lt;br /&gt;
 11           FROM &amp;quot; || NVL (sch, USER) || &amp;quot;.&amp;quot; || tab ||&lt;br /&gt;
 12        &amp;quot; WHERE &amp;quot; || NVL (whr, &amp;quot;1=1&amp;quot;)&lt;br /&gt;
 13        INTO retval;&lt;br /&gt;
 14     RETURN retval;&lt;br /&gt;
 15  END;&lt;br /&gt;
 16  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== To number or null==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace FUNCTION to_number_or_null(aiv_number in varchar2)return                                number is&lt;br /&gt;
  2  begin&lt;br /&gt;
  3    return to_number(aiv_number);&lt;br /&gt;
  4  exception&lt;br /&gt;
  5    when INVALID_NUMBER then&lt;br /&gt;
  6      return NULL;&lt;br /&gt;
  7  end to_number_or_null;&lt;br /&gt;
  8  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Word count function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION wordcount (str IN VARCHAR2)&lt;br /&gt;
  2     RETURN PLS_INTEGER&lt;br /&gt;
  3  AS&lt;br /&gt;
  4     words PLS_INTEGER := 0;&lt;br /&gt;
  5     len PLS_INTEGER := NVL(LENGTH(str),0);&lt;br /&gt;
  6     inside_a_word BOOLEAN;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8     FOR i IN 1..len + 1&lt;br /&gt;
  9     LOOP&lt;br /&gt;
 10        IF ASCII(SUBSTR(str, i, 1)) &amp;lt; 33 OR i &amp;gt; len&lt;br /&gt;
 11        THEN&lt;br /&gt;
 12           IF inside_a_word&lt;br /&gt;
 13           THEN&lt;br /&gt;
 14              words := words + 1;&lt;br /&gt;
 15              inside_a_word := FALSE;&lt;br /&gt;
 16           END IF;&lt;br /&gt;
 17        ELSE&lt;br /&gt;
 18           inside_a_word := TRUE;&lt;br /&gt;
 19        END IF;&lt;br /&gt;
 20     END LOOP;&lt;br /&gt;
 21     RETURN words;&lt;br /&gt;
 22  END;&lt;br /&gt;
 23  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>