<?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>Fullyreloaded Blog &#187; autonumber</title>
	<atom:link href="http://blog.fullyreloaded.com/tag/autonumber/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.fullyreloaded.com</link>
	<description>reload your mind</description>
	<lastBuildDate>Fri, 23 Apr 2010 07:11:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Autonumber using Stored Procedure in SQL Server</title>
		<link>http://blog.fullyreloaded.com/autonumber-using-stored-procedure-in-sql-server</link>
		<comments>http://blog.fullyreloaded.com/autonumber-using-stored-procedure-in-sql-server#comments</comments>
		<pubDate>Thu, 15 Jan 2009 17:52:52 +0000</pubDate>
		<dc:creator>Lucky Adibrata</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[autonumber]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://blog.fullyreloaded.com/?p=374</guid>
		<description><![CDATA[Today I want to share an SQL Server 2005 stored procedure to make autonumber. This stored procedure provide two numbering templates.

autonumber template #1: ..
autonumber template #2: .



The Script

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author:		Lucky
-- Create date: October 2008
-- Description:	Create autonumber
-- =============================================
CREATE PROCEDURE [dbo].[sp_create_numbering_row]
	-- Add the parameters for the stored procedure here
	@no VARCHAR(20) = NULL OUTPUT,
	@tablename [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Today I want to share an SQL Server 2005 stored procedure to make autonumber. This stored procedure provide two numbering templates.</p>
<pre lang="sql">
autonumber template #1: <INITIAL>.<YEAR>.<NUMBER>
autonumber template #2: <1DIGIT-YEAR><1DIGIT-MONTH>.<NUMBER>
</pre>
<p><a href="http://blog.fullyreloaded.com/wp-content/uploads/2009/01/sqlserver-autonumber.jpg"><img src="http://blog.fullyreloaded.com/wp-content/uploads/2009/01/sqlserver-autonumber-300x142.jpg" alt="sqlserver-autonumber" title="sqlserver-autonumber" width="300" height="142" class="aligncenter size-medium wp-image-375" /></a></p>
<p><span id="more-374"></span></p>
<p><strong>The Script</strong></p>
<pre lang="sql" line="1">
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author:		Lucky
-- Create date: October 2008
-- Description:	Create autonumber
-- =============================================
CREATE PROCEDURE [dbo].[sp_create_numbering_row]
	-- Add the parameters for the stored procedure here
	@no VARCHAR(20) = NULL OUTPUT,
	@tablename VARCHAR(100),
	@numberfieldname VARCHAR(100),
	@numberlength INT,
	@initialdigit VARCHAR(3),
	@templatenumber INT

AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

	-- AUTONUMBERING TEMPLATE #1 <INITIAL>.<YEAR>.<NUMBER>
	-- AUTONUMBERING TEMPLATE #2 <1YEAR><1MONTH>.<NUMBER>

	DECLARE @sql NVARCHAR(MAX);
	DECLARE @result INT;
	DECLARE @next INT;
	DECLARE @nextnumber NVARCHAR(20);
	DECLARE @yearlastdigit VARCHAR(1);
	DECLARE @monthdigit NVARCHAR(2);

	SET @monthdigit=MONTH(GETDATE())
	IF(@monthdigit=10) SET @monthdigit='0'
	ELSE IF(@monthdigit=11) SET @monthdigit='A'
	ELSE IF(@monthdigit=12) SET @monthdigit='B'

	SET @yearlastdigit=(SELECT RIGHT(YEAR(GETDATE()),1))

	IF(@templatenumber=1)
	SET @sql = 'SELECT @result=CAST(RIGHT('+@numberfieldname+','+CAST(@numberlength as NVARCHAR(2))+') AS INT) FROM ['+@tablename+'] WHERE '+@numberfieldname+' LIKE '''+@initialdigit+'.'+@yearlastdigit+'.%''';
	ELSE
	SET @sql = 'SELECT @result=CAST(RIGHT('+@numberfieldname+','+CAST(@numberlength as NVARCHAR(2))+') AS INT) FROM ['+@tablename+'] WHERE '+@numberfieldname+' LIKE '''+@yearlastdigit+@monthdigit+'.%''';

	EXEC sp_executesql @sql,N'@result INT OUTPUT',@result=@result OUTPUT

	IF(ISNULL(@result,0)=0)
	SET @next=1
	ELSE
	SET @next=@result+1

	IF(@templatenumber=1)
	SET @nextnumber=@initialdigit+'.'+@yearlastdigit+'.'+RIGHT(REPLICATE('0',@numberlength)+CAST(@next AS NVARCHAR(20)),@numberlength)
	ELSE
	SET @nextnumber=@yearlastdigit+@monthdigit+'.'+RIGHT(REPLICATE('0',@numberlength)+CAST(@next AS NVARCHAR(20)),@numberlength)

	PRINT @sql
	PRINT @result
	PRINT @next
	PRINT @nextnumber

	SET @sql='INSERT INTO ['+@tablename+'] ('+@numberfieldname+') VALUES ('''+@nextnumber+''')';
	PRINT @sql
	EXEC sp_executesql @sql

	SET @no=@nextnumber
	SELECT @no AS no
END
</pre>
<p><strong>Parameters</strong></p>
<table>
<tr>
<td>@no</td>
<td>VARCHAR(20)</td>
<td>OUTPUT</td>
<td>Resulting Output</td>
</tr>
<tr>
<td>@tablename</td>
<td>VARCHAR(100)</td>
<td>INPUT</td>
<td>Name of the table</td>
</tr>
<tr>
<td>@numberfieldname</td>
<td>VARCHAR(100)</td>
<td>INPUT</td>
<td>Numbering field name</td>
</tr>
<tr>
<td>@numberlength</td>
<td>INT</td>
<td>INPUT</td>
<td>Number digits length</td>
</tr>
<tr>
<td>@initialdigit</td>
<td>VARCHAR(3)</td>
<td>INPUT</td>
<td>Initial digit characters</td>
</tr>
<tr>
<td>@templatenumber</td>
<td>INT</td>
<td>INPUT</td>
<td>Template number: 1 or 2</td>
</tr>
</table>
<p><strong>Usage</strong></p>
<pre lang="sql">
-- Generate autonumber template #1: <INITIAL>.<YEAR>.<NUMBER>
exec dbo.sp_create_numbering_row
@tablename='tbl_customer',
@numberfieldname='customer_number',
@numberlength=3,
@initialdigit='CUS',
@templatenumber=1

-- Generate autonumber template #2: <1DIGIT-YEAR><1DIGIT-MONTH>.<NUMBER>
exec dbo.sp_create_numbering_row
@tablename='tbl_customer',
@numberfieldname='customer_number',
@numberlength=3,
@initialdigit='',
@templatenumber=2
</pre>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://blog.fullyreloaded.com/autonumber-using-stored-procedure-in-sql-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
