<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Brian Low &#187; Oracle</title>
	<atom:link href="http://www.brianlow.com/index.php/category/oracle/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brianlow.com</link>
	<description>Software Development Notes</description>
	<lastBuildDate>Fri, 16 Jul 2010 22:02:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Reset Sequence From Table</title>
		<link>http://www.brianlow.com/index.php/2008/04/29/reset-sequence-from-table/</link>
		<comments>http://www.brianlow.com/index.php/2008/04/29/reset-sequence-from-table/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 00:00:24 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.brianlow.com/index.php/2008/04/29/reset-sequence-from-table/</guid>
		<description><![CDATA[This procedure will lookup the maximum value used in a table then set the sequence to this value + 1. Based on code from from http://www.psoug.org/reference/sequences.html.

CREATE OR REPLACE PROCEDURE reset_sequence &#40;
seq_name IN VARCHAR2, startvalue IN PLS_INTEGER&#41; AS
&#160;
cval   INTEGER;
inc_by VARCHAR2&#40;25&#41;;
&#160;
BEGIN
  EXECUTE IMMEDIATE 'ALTER SEQUENCE ' &#124;&#124;seq_name&#124;&#124;' MINVALUE 0';
&#160;
  EXECUTE IMMEDIATE 'SELECT ' [...]]]></description>
			<content:encoded><![CDATA[<p>This procedure will lookup the maximum value used in a table then set the sequence to this value + 1. Based on code from from <a href="http://www.psoug.org/reference/sequences.html">http://www.psoug.org/reference/sequences.html</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">CREATE</span> <span style="color: #00F;">OR</span> <span style="color: #000;">REPLACE</span> <span style="color: #00F;">PROCEDURE</span> reset_sequence <span style="color: #00F;">&#40;</span>
seq_name <span style="color: #00F;">IN</span> <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">,</span> startvalue <span style="color: #00F;">IN</span> <span style="color: #00F;">PLS_INTEGER</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">AS</span>
&nbsp;
cval   <span style="color: #00F;">INTEGER</span><span style="color: #00F;">;</span>
inc_by <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">&#40;</span><span style="color: #800;">25</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">BEGIN</span>
  <span style="color: #00F;">EXECUTE</span> <span style="color: #00F;">IMMEDIATE</span> <span style="color: #F00;">'ALTER SEQUENCE '</span> <span style="color: #00F;">||</span>seq_name<span style="color: #00F;">||</span><span style="color: #F00;">' MINVALUE 0'</span><span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">EXECUTE</span> <span style="color: #00F;">IMMEDIATE</span> <span style="color: #F00;">'SELECT '</span> <span style="color: #00F;">||</span>seq_name <span style="color: #00F;">||</span><span style="color: #F00;">'.NEXTVAL FROM dual'</span> <span style="color: #00F;">INTO</span> cval<span style="color: #00F;">;</span>
&nbsp;
  cval <span style="color: #00F;">:=</span> cval <span style="color: #00F;">-</span> startvalue <span style="color: #00F;">+</span> <span style="color: #800;">1</span><span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">IF</span> cval <span style="color: #00F;">=</span> <span style="color: #800;">0</span> <span style="color: #00F;">THEN</span>
    <span style="color: #00F;">RETURN</span><span style="color: #00F;">;</span>
  <span style="color: #00F;">ELSIF</span> cval <span style="color: #00F;">&lt;</span> <span style="color: #800;">0</span> <span style="color: #00F;">THEN</span> 
    inc_by <span style="color: #00F;">:=</span> <span style="color: #F00;">' INCREMENT BY '</span> <span style="color: #00F;">||</span> <span style="color: #000;">ABS</span><span style="color: #00F;">&#40;</span>cval<span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
  <span style="color: #00F;">ELSE</span>
    inc_by <span style="color: #00F;">:=</span> <span style="color: #F00;">' INCREMENT BY -'</span> <span style="color: #00F;">||</span> cval<span style="color: #00F;">;</span>
  <span style="color: #00F;">END</span> <span style="color: #00F;">IF</span><span style="color: #00F;">;</span> 
&nbsp;
  <span style="color: #00F;">EXECUTE</span> <span style="color: #00F;">IMMEDIATE</span> <span style="color: #F00;">'ALTER SEQUENCE '</span> <span style="color: #00F;">||</span> seq_name <span style="color: #00F;">||</span> inc_by<span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">EXECUTE</span> <span style="color: #00F;">IMMEDIATE</span> <span style="color: #F00;">'SELECT '</span> <span style="color: #00F;">||</span>seq_name <span style="color: #00F;">||</span><span style="color: #F00;">'.NEXTVAL FROM dual'</span> <span style="color: #00F;">INTO</span> cval<span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">EXECUTE</span> <span style="color: #00F;">IMMEDIATE</span> <span style="color: #F00;">'ALTER SEQUENCE '</span> <span style="color: #00F;">||</span> seq_name <span style="color: #00F;">||</span> <span style="color: #F00;">' INCREMENT BY 1'</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">END</span> reset_sequence<span style="color: #00F;">;</span>
<span style="color: #00F;">/</span>
&nbsp;
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">OR</span> <span style="color: #000;">REPLACE</span> <span style="color: #00F;">PROCEDURE</span> reset_sequence_from_table <span style="color: #00F;">&#40;</span>
seq_name <span style="color: #00F;">IN</span> <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">,</span> column_name <span style="color: #00F;">IN</span> <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">,</span> table_name <span style="color: #00F;">IN</span> <span style="color: #00F;">VARCHAR2</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">AS</span>
&nbsp;
cval   <span style="color: #00F;">INTEGER</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">BEGIN</span>
&nbsp;
  <span style="color: #00F;">EXECUTE</span> <span style="color: #00F;">IMMEDIATE</span> <span style="color: #F00;">'SELECT MAX('</span> <span style="color: #00F;">||</span> column_name <span style="color: #00F;">||</span><span style="color: #F00;">') FROM '</span> <span style="color: #00F;">||</span> table_name 
  <span style="color: #00F;">INTO</span> cval<span style="color: #00F;">;</span>
&nbsp;
  <span style="color: #00F;">IF</span> <span style="color: #00F;">&#40;</span>cval <span style="color: #00F;">IS</span> <span style="color: #00F;">NULL</span><span style="color: #00F;">&#41;</span> <span style="color: #00F;">THEN</span>
    cval <span style="color: #00F;">:=</span> <span style="color: #800;">1</span><span style="color: #00F;">;</span>
  <span style="color: #00F;">ELSE</span>
    cval <span style="color: #00F;">:=</span> cval <span style="color: #00F;">+</span> <span style="color: #800;">1</span><span style="color: #00F;">;</span>
  <span style="color: #00F;">END</span> <span style="color: #00F;">IF</span><span style="color: #00F;">;</span>
&nbsp;
  RESET_SEQUENCE<span style="color: #00F;">&#40;</span>seq_name<span style="color: #00F;">,</span> cval<span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">END</span> reset_sequence_from_table<span style="color: #00F;">;</span>
<span style="color: #00F;">/</span></pre></div></div>

<p>Setup some test data to verify the proc:</p>

<div class="wp_syntax"><div class="code"><pre class="plsql" style="font-family:monospace;"><span style="color: #00F;">DROP</span> sequence mytable_seq<span style="color: #00F;">;</span>
<span style="color: #00F;">DROP</span> <span style="color: #00F;">TABLE</span> mytable<span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">CREATE</span> <span style="color: #00F;">TABLE</span> mytable <span style="color: #00F;">&#40;</span> id <span style="color: #00F;">NUMBER</span> <span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">CREATE</span> sequence mytable_seq<span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">1</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">2</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">3</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">4</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">5</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">6</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">7</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">8</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">9</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
<span style="color: #00F;">INSERT</span> <span style="color: #00F;">INTO</span> mytable <span style="color: #00F;">VALUES</span> <span style="color: #00F;">&#40;</span><span style="color: #800;">10</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span>
&nbsp;
<span style="color: #00F;">COMMIT</span><span style="color: #00F;">;</span></pre></div></div>

<p>A test:</p>

<div class="wp_syntax"><div class="code"><pre class="plsql" style="font-family:monospace;">exec reset_sequence_from_table<span style="color: #00F;">&#40;</span><span style="color: #F00;">'MYTABLE_SEQ'</span><span style="color: #00F;">,</span> <span style="color: #F00;">'ID'</span><span style="color: #00F;">,</span> <span style="color: #F00;">'MYTABLE'</span><span style="color: #00F;">&#41;</span><span style="color: #00F;">;</span>
&nbsp;
<span style="color: #080; font-style: italic;">-- should return 11 because mytable has a record with id 10</span>
<span style="color: #00F;">SELECT</span> mytable_seq<span style="color: #00F;">.</span><span style="color: #00F;">NEXTVAL</span> <span style="color: #00F;">FROM</span> dual<span style="color: #00F;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.brianlow.com/index.php/2008/04/29/reset-sequence-from-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recompile All Oracle Objects</title>
		<link>http://www.brianlow.com/index.php/2007/01/16/recompile-all-oracle-objects/</link>
		<comments>http://www.brianlow.com/index.php/2007/01/16/recompile-all-oracle-objects/#comments</comments>
		<pubDate>Tue, 16 Jan 2007 17:37:20 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.brianlow.com/index.php/2007/01/16/recompile-all-oracle-objects/</guid>
		<description><![CDATA[
exec dbms_utility.compile_schema(schema => 'MYSCHEMA', compile_all => FALSE);

]]></description>
			<content:encoded><![CDATA[<pre lang="sql">
exec dbms_utility.compile_schema(schema => 'MYSCHEMA', compile_all => FALSE);</p>
<pre>
]]></content:encoded>
			<wfw:commentRss>http://www.brianlow.com/index.php/2007/01/16/recompile-all-oracle-objects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
