<?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%2FStored_Procedure_Function%2FUtility_Function</id>
		<title>Oracle PL/SQL/Stored Procedure Function/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%2FStored_Procedure_Function%2FUtility_Function"/>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Utility_Function&amp;action=history"/>
		<updated>2026-04-05T16:12:05Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Utility_Function&amp;diff=2104&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/Stored_Procedure_Function/Utility_Function&amp;diff=2104&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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/Stored_Procedure_Function/Utility_Function&amp;diff=2105&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://sqle.ru/index.php?title=Oracle_PL/SQL/Stored_Procedure_Function/Utility_Function&amp;diff=2105&amp;oldid=prev"/>
				<updated>2010-05-26T10:00:57Z</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;==Calculate average grade==&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;
  &lt;br /&gt;
SQL&amp;gt; CREATE TABLE myStudent (&lt;br /&gt;
  2    student_id NUMBER(5) NOT NULL,&lt;br /&gt;
  3    department CHAR(3)   NOT NULL,&lt;br /&gt;
  4    course     NUMBER(3) NOT NULL,&lt;br /&gt;
  5    grade      CHAR(1)&lt;br /&gt;
  6    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10000, &amp;quot;CS&amp;quot;, 102, &amp;quot;A&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10002, &amp;quot;CS&amp;quot;, 102, &amp;quot;B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10003, &amp;quot;CS&amp;quot;, 102, &amp;quot;C&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10000, &amp;quot;HIS&amp;quot;, 101, &amp;quot;A&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10001, &amp;quot;HIS&amp;quot;, 101, &amp;quot;B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO myStudent (student_id, department, course, grade)&lt;br /&gt;
  2                           VALUES (10002, &amp;quot;HIS&amp;quot;, 101, &amp;quot;B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION AverageGrade (p_Department IN VARCHAR2,p_Course IN NUMBER) RETURN VARCHAR2 AS&lt;br /&gt;
  2&lt;br /&gt;
  3    v_AverageGrade VARCHAR2(1);&lt;br /&gt;
  4    v_NumericGrade NUMBER;&lt;br /&gt;
  5    v_NumberStudents NUMBER;&lt;br /&gt;
  6&lt;br /&gt;
  7    CURSOR c_Grades IS&lt;br /&gt;
  8      SELECT grade&lt;br /&gt;
  9        FROM myStudent&lt;br /&gt;
 10        WHERE department = p_Department&lt;br /&gt;
 11        AND course = p_Course;&lt;br /&gt;
 12  BEGIN&lt;br /&gt;
 13    SELECT COUNT(*)&lt;br /&gt;
 14      INTO v_NumberStudents&lt;br /&gt;
 15      FROM myStudent&lt;br /&gt;
 16      WHERE department = p_Department&lt;br /&gt;
 17        AND course = p_Course;&lt;br /&gt;
 18&lt;br /&gt;
 19    IF v_NumberStudents = 0 THEN&lt;br /&gt;
 20      RAISE_APPLICATION_ERROR(-20001, &amp;quot;No students registered for &amp;quot; ||&lt;br /&gt;
 21        p_Department || &amp;quot; &amp;quot; || p_Course);&lt;br /&gt;
 22    END IF;&lt;br /&gt;
 23&lt;br /&gt;
 24    SELECT AVG(DECODE(grade, &amp;quot;A&amp;quot;, 5,&lt;br /&gt;
 25                             &amp;quot;B&amp;quot;, 4,&lt;br /&gt;
 26                             &amp;quot;C&amp;quot;, 3,&lt;br /&gt;
 27                             &amp;quot;D&amp;quot;, 2,&lt;br /&gt;
 28                             &amp;quot;E&amp;quot;, 1))&lt;br /&gt;
 29      INTO v_NumericGrade&lt;br /&gt;
 30      FROM myStudent&lt;br /&gt;
 31      WHERE department = p_Department&lt;br /&gt;
 32      AND course = p_Course;&lt;br /&gt;
 33&lt;br /&gt;
 34    SELECT DECODE(ROUND(v_NumericGrade), 5, &amp;quot;A&amp;quot;,&lt;br /&gt;
 35                                         4, &amp;quot;B&amp;quot;,&lt;br /&gt;
 36                                         3, &amp;quot;C&amp;quot;,&lt;br /&gt;
 37                                         2, &amp;quot;D&amp;quot;,&lt;br /&gt;
 38                                         1, &amp;quot;E&amp;quot;)&lt;br /&gt;
 39      INTO v_AverageGrade&lt;br /&gt;
 40      FROM dual;&lt;br /&gt;
 41&lt;br /&gt;
 42    RETURN v_AverageGrade;&lt;br /&gt;
 43  END AverageGrade;&lt;br /&gt;
 44  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select AverageGrade(&amp;quot;HIS&amp;quot;, 101) from dual;&lt;br /&gt;
AVERAGEGRADE(&amp;quot;HIS&amp;quot;,101)&lt;br /&gt;
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
B&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table myStudent;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function to count tab==&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;
  &lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION tabcount (tab IN VARCHAR2, whr IN VARCHAR2 := NULL)&lt;br /&gt;
  2     RETURN PLS_INTEGER AUTHID CURRENT_USER&lt;br /&gt;
  3  IS&lt;br /&gt;
  4     str      VARCHAR2 (32767) := &amp;quot;SELECT COUNT(*) FROM &amp;quot; || tab;&lt;br /&gt;
  5     retval   PLS_INTEGER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7     IF whr IS NOT NULL&lt;br /&gt;
  8     THEN&lt;br /&gt;
  9        str := str || &amp;quot; WHERE &amp;quot; || whr;&lt;br /&gt;
 10     END IF;&lt;br /&gt;
 11&lt;br /&gt;
 12     EXECUTE IMMEDIATE str&lt;br /&gt;
 13                  INTO retval;&lt;br /&gt;
 14  EXCEPTION&lt;br /&gt;
 15     WHEN OTHERS&lt;br /&gt;
 16     THEN&lt;br /&gt;
 17        DBMS_OUTPUT.put_line (&amp;quot;TABCOUNT ERROR: &amp;quot; || DBMS_UTILITY.FORMAT_ERROR_STACK);&lt;br /&gt;
 18        DBMS_OUTPUT.put_line (str);&lt;br /&gt;
 19        RETURN NULL;&lt;br /&gt;
 20  END;&lt;br /&gt;
 21  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Function to update null value==&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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION updNVal (&lt;br /&gt;
  2     tab IN VARCHAR2,&lt;br /&gt;
  3     col IN VARCHAR2,&lt;br /&gt;
  4     val IN NUMBER,&lt;br /&gt;
  5     whr IN VARCHAR2 := NULL,&lt;br /&gt;
  6     sch IN VARCHAR2 := NULL)&lt;br /&gt;
  7     RETURN INTEGER&lt;br /&gt;
  8  IS&lt;br /&gt;
  9  BEGIN&lt;br /&gt;
 10     EXECUTE IMMEDIATE&lt;br /&gt;
 11        &amp;quot;UPDATE &amp;quot; || NVL (sch, USER) || &amp;quot;.&amp;quot; || tab ||&lt;br /&gt;
 12        &amp;quot;   SET &amp;quot; || col || &amp;quot; = :the_value&lt;br /&gt;
 13          WHERE &amp;quot; || NVL (whr, &amp;quot;1=1&amp;quot;)&lt;br /&gt;
 14       USING val;&lt;br /&gt;
 15     RETURN SQL%ROWCOUNT;&lt;br /&gt;
 16  END;&lt;br /&gt;
 17  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Raise pay level==&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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION RAISE(&lt;br /&gt;
  2            p_paylevel INTEGER,&lt;br /&gt;
  3            p_payrate NUMBER)&lt;br /&gt;
  4       RETURN NUMBER IS&lt;br /&gt;
  5       v_newrate NUMBER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7       IF p_paylevel = 1 THEN&lt;br /&gt;
  8            v_newrate := p_payrate * 1.10;&lt;br /&gt;
  9       ELSIF p_paylevel = 2 THEN&lt;br /&gt;
 10            v_newrate := p_payrate * 1.05;&lt;br /&gt;
 11       ELSIF p_paylevel = 3 THEN&lt;br /&gt;
 12            v_newrate := p_payrate * 1.04;&lt;br /&gt;
 13       ELSIF p_paylevel = 4 THEN&lt;br /&gt;
 14            v_newrate := p_payrate * 1.03;&lt;br /&gt;
 15  ELSIF p_paylevel = 5 THEN&lt;br /&gt;
 16            v_newrate := p_payrate ;&lt;br /&gt;
 17       ELSE&lt;br /&gt;
 18            v_newrate := p_payrate * 1.02;&lt;br /&gt;
 19       END IF;&lt;br /&gt;
 20       RETURN v_newrate;&lt;br /&gt;
 21  END RAISE;&lt;br /&gt;
 22  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select raise(2,3) from dual;&lt;br /&gt;
RAISE(2,3)&lt;br /&gt;
----------&lt;br /&gt;
      3.15&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Raise power 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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION RAISE(&lt;br /&gt;
  2            p1 INTEGER,&lt;br /&gt;
  3            p2 NUMBER)&lt;br /&gt;
  4       RETURN NUMBER IS&lt;br /&gt;
  5       p3 NUMBER;&lt;br /&gt;
  6  BEGIN&lt;br /&gt;
  7       IF p1 = 1 THEN&lt;br /&gt;
  8            p3 := p2 * 1.10;&lt;br /&gt;
  9       ELSIF p1 = 2 THEN&lt;br /&gt;
 10            p3 := p2 * 1.05;&lt;br /&gt;
 11       ELSIF p1 = 3 THEN&lt;br /&gt;
 12            p3 := p2 * 1.04;&lt;br /&gt;
 13       ELSIF p1 = 4 THEN&lt;br /&gt;
 14            p3 := p2 * 1.03;&lt;br /&gt;
 15       ELSIF p1 = 5 THEN&lt;br /&gt;
 16            p3 := p2 ;&lt;br /&gt;
 17       ELSE&lt;br /&gt;
 18            p3 := p2 * 1.02;&lt;br /&gt;
 19       END IF;&lt;br /&gt;
 20       RETURN p3; --&lt;br /&gt;
 21  END RAISE;&lt;br /&gt;
 22  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select raise(2,3) from dual;&lt;br /&gt;
RAISE(2,3)&lt;br /&gt;
----------&lt;br /&gt;
      3.15&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Temperature package: convert Celsius to Fahrenheit back, forth==&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;
   &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE temperature IS&lt;br /&gt;
  2     PROCEDURE Temperature_Conversion ( degree number,cf varchar2);&lt;br /&gt;
  3     FUNCTION Celsius_to_Fahrenheit ( degree NUMBER) Return Number;&lt;br /&gt;
  4     FUNCTION Fahrenheit_to_Celsius ( degree NUMBER) Return Number;&lt;br /&gt;
  5  END temperature;&lt;br /&gt;
  6  /&lt;br /&gt;
Package created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PACKAGE BODY temperature AS&lt;br /&gt;
  2&lt;br /&gt;
  3  PROCEDURE temperature_conversion (degree number,cf varchar2) IS&lt;br /&gt;
  4      buffer NUMBER := 0;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6      IF cf = &amp;quot;C&amp;quot;&lt;br /&gt;
  7      THEN&lt;br /&gt;
  8          buffer := TEMPERATURE.Celsius_to_Fahrenheit(degree);&lt;br /&gt;
  9          DBMS_OUTPUT.PUT_LINE(&amp;quot;Fahrenheit = &amp;quot; || buffer);&lt;br /&gt;
 10          RETURN;&lt;br /&gt;
 11      ELSIF cf = &amp;quot;F&amp;quot;&lt;br /&gt;
 12      THEN&lt;br /&gt;
 13          buffer := TEMPERATURE.Fahrenheit_to_Celsius(degree);&lt;br /&gt;
 14          DBMS_OUTPUT.PUT_LINE(&amp;quot;Celsius = &amp;quot; || buffer);&lt;br /&gt;
 15          RETURN;&lt;br /&gt;
 16      END IF;&lt;br /&gt;
 17      DBMS_OUTPUT.PUT_LINE(&amp;quot;Bad Temperature Conversion Code: &amp;quot; || cf);&lt;br /&gt;
 18  RETURN;&lt;br /&gt;
 19&lt;br /&gt;
 20  END temperature_conversion;&lt;br /&gt;
 21&lt;br /&gt;
 22      FUNCTION celsius_to_fahrenheit (degree NUMBER)&lt;br /&gt;
 23      RETURN NUMBER IS&lt;br /&gt;
 24      buffer NUMBER;&lt;br /&gt;
 25&lt;br /&gt;
 26      BEGIN&lt;br /&gt;
 27         buffer := (degree * 9/5) + 32;&lt;br /&gt;
 28         RETURN buffer;&lt;br /&gt;
 29      END celsius_to_fahrenheit;&lt;br /&gt;
 30&lt;br /&gt;
 31      FUNCTION fahrenheit_to_celsius (degree NUMBER)&lt;br /&gt;
 32      RETURN NUMBER IS&lt;br /&gt;
 33      buffer NUMBER;&lt;br /&gt;
 34&lt;br /&gt;
 35      BEGIN&lt;br /&gt;
 36         buffer := (5/9) * (degree - 32);&lt;br /&gt;
 37         RETURN buffer;&lt;br /&gt;
 38      END fahrenheit_to_celsius;&lt;br /&gt;
 39&lt;br /&gt;
 40  END temperature;&lt;br /&gt;
 41  /&lt;br /&gt;
Package body created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Validate date value format==&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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION validate_date_format&lt;br /&gt;
  2     (p_input_date in VARCHAR2) RETURN BOOLEAN IS&lt;br /&gt;
  3     myResult DATE;&lt;br /&gt;
  4  BEGIN&lt;br /&gt;
  5     myResult := TO_DATE(p_input_date, &amp;quot;MM/DD/YYYY&amp;quot;);&lt;br /&gt;
  6     IF LENGTH(SUBSTR(p_input_date,&lt;br /&gt;
  7        INSTR(p_input_date, &amp;quot;/&amp;quot;, 1, 2) + 1)) = 4 THEN&lt;br /&gt;
  8        RETURN TRUE;&lt;br /&gt;
  9     ELSE&lt;br /&gt;
 10        RETURN FALSE;&lt;br /&gt;
 11     END IF;&lt;br /&gt;
 12  EXCEPTION&lt;br /&gt;
 13     WHEN OTHERS THEN&lt;br /&gt;
 14        RETURN FALSE;&lt;br /&gt;
 15  END validate_date_format;&lt;br /&gt;
 16  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; show error&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; BEGIN&lt;br /&gt;
  2     IF validate_date_format(&amp;quot;&amp;amp;&amp;amp;valid_date&amp;quot;) THEN&lt;br /&gt;
  3        DBMS_OUTPUT.PUT_LINE(&amp;quot;Date: &amp;quot; || &amp;quot;&amp;amp;&amp;amp;valid_date&amp;quot; ||&lt;br /&gt;
  4           CHR(9) || &amp;quot; is a VALID Date.&amp;quot;);&lt;br /&gt;
  5     ELSE&lt;br /&gt;
  6        DBMS_OUTPUT.PUT_LINE(&amp;quot;Date: &amp;quot; || &amp;quot;&amp;amp;&amp;amp;valid_date&amp;quot; ||&lt;br /&gt;
  7           CHR(9) || &amp;quot; is an INVALID Date.&amp;quot;);&lt;br /&gt;
  8     END IF;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
old   2:    IF validate_date_format(&amp;quot;&amp;amp;&amp;amp;valid_date&amp;quot;) THEN&lt;br /&gt;
new   2:    IF validate_date_format(&amp;quot;&amp;quot;) THEN&lt;br /&gt;
old   3:       DBMS_OUTPUT.PUT_LINE(&amp;quot;Date: &amp;quot; || &amp;quot;&amp;amp;&amp;amp;valid_date&amp;quot; ||&lt;br /&gt;
new   3:       DBMS_OUTPUT.PUT_LINE(&amp;quot;Date: &amp;quot; || &amp;quot;&amp;quot; ||&lt;br /&gt;
old   6:       DBMS_OUTPUT.PUT_LINE(&amp;quot;Date: &amp;quot; || &amp;quot;&amp;amp;&amp;amp;valid_date&amp;quot; ||&lt;br /&gt;
new   6:       DBMS_OUTPUT.PUT_LINE(&amp;quot;Date: &amp;quot; || &amp;quot;&amp;quot; ||&lt;br /&gt;
Date:    is an INVALID Date.&lt;br /&gt;
PL/SQL procedure successfully completed.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Your own month add method==&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;
  &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SET ECHO ON&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE FUNCTION add_mon (date_in DATE,months_to_add NUMBER)&lt;br /&gt;
  2  RETURN DATE AS&lt;br /&gt;
  3    day_in VARCHAR2(3);&lt;br /&gt;
  4    day_work VARCHAR2(3);&lt;br /&gt;
  5    date_out DATE;&lt;br /&gt;
  6    date_work DATE;&lt;br /&gt;
  7  BEGIN&lt;br /&gt;
  8&lt;br /&gt;
  9    day_in := TO_NUMBER(TO_CHAR(date_in,&amp;quot;dd&amp;quot;));&lt;br /&gt;
 10    date_work := ADD_MONTHS(date_in, months_to_add);&lt;br /&gt;
 11    day_work := TO_NUMBER(TO_CHAR(date_work,&amp;quot;dd&amp;quot;));&lt;br /&gt;
 12    IF day_in = day_work THEN&lt;br /&gt;
 13      date_out := date_work;&lt;br /&gt;
 14    ELSIF day_work &amp;lt; day_in THEN&lt;br /&gt;
 15      date_out := date_work;&lt;br /&gt;
 16    ELSE&lt;br /&gt;
 17      date_out := date_work - (day_work - day_in);&lt;br /&gt;
 18    END IF;&lt;br /&gt;
 19&lt;br /&gt;
 20    RETURN date_out;&lt;br /&gt;
 21  END;&lt;br /&gt;
 22  /&lt;br /&gt;
Function created.&lt;br /&gt;
SQL&amp;gt; show error&lt;br /&gt;
No errors.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select add_mon(sysdate, 6) from dual;&lt;br /&gt;
ADD_MON(SYSDATE,6)&lt;br /&gt;
--------------------&lt;br /&gt;
16-DEC-2008 18:11:35&lt;br /&gt;
1 row selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>