Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 103,420

HOME > บทความจากสมาชิก > สร้าง Auto ID หรือลำดับที่มีตัวอักษร ปี, เดือน บน SQL Server ด้วย Stored Procedure



 

สร้าง Auto ID หรือลำดับที่มีตัวอักษร ปี, เดือน บน SQL Server ด้วย Stored Procedure

สร้าง Auto ID หรือลำดับที่มีตัวอักษร ปี, เดือน บน SQL Server ด้วย Stored Procedure วิธีการสร้าง Auto ID หรือ Auto Number ถ้าใช้ Database ของ SQL Server การเขียนบน Stored Procedure เป็นอีกวิธีหนึ่งที่จะช่วยให้การสร้าง Auto ID นั้นง่ายและสะดวกมาก เพราะสามารถที่จะเขียนเงื่อนไขต่าง ๆ เช้น การ Select ค่า ID หรือการ Update ID ที่เป็นลำดับบน Stored Procedure ได้เลย ซึ่งตัว Result ที่ได้ เราจะใช้การส่งค่ากลับในรูแบบของ OUT หรือ OUTPUT จากนั้นช้ฝั่งของโปรแกรมเช่น PHP, .Net หรือ Java อ่านค่า ID นั้นไปใช้งานได้เลย



Auto ID Number ด้วย SQL Server (Stored Procedure)


ในตัวอย่างนี้จะประกอบด้วย 2 ตัวอย่างคือ
1. สร้าง ID แบบทีตัวอักษรและลำดับ เช่น TC-00001
2. สร้าง ID แบบที่มี ปี, เดือน และลำดับ เช่น TC-2016-12-0001

สำหรับ Stored Procedure ในตัวอย่างนี้จะใช้การส่งค่ากลับแบบ OUTPUT ซึ่งจะมีตัวอย่างการเชื่อมต่อกับ Stored Procedure ของ SQL Server ในรูปแบบต่าง ๆ ในส่วนท้ายของบทความ

Ex1. สร้าง Auto ID แบบทีตัวอักษรและลำดับ เช่น TC-00001

ใน Concept ของตัวอย่างแรก ให้สร้าง Table ง่าย ๆ สำหรับจัดเก็บลำดับแบบง่าย ๆ โดยจัดเก็บเป็นตัวเลข ที่เป็น ID ล่าสุด เพื่อจะได้นำไป +1 เมื่อมีการดึงค่า ID ใหม่

Table : GenerateNumber
CREATE TABLE [dbo].[GenerateNumber](
	[Sequence] [int] NOT NULL,
 CONSTRAINT [PK_GenerateNumber] PRIMARY KEY CLUSTERED 
(
	[Sequence] ASC
)) ON [PRIMARY]

GO

INSERT INTO GenerateNumber (Sequence) VALUES ('1');

SQL Server Stored Procedure Generate Auto ID Auto Number

Stored Procedure : GetAutoIDNo
CREATE PROCEDURE [dbo].[GetAutoIDNo]
	@sPrefix				VARCHAR(10),
	@iLength				INT,

	@sAutoID				VARCHAR(14) OUTPUT
AS
SET DATEFORMAT DMY;  
BEGIN

	SET NOCOUNT ON;

	DECLARE	@iSeq		INT = 0;
	
	BEGIN TRY
		SELECT @iSeq = ISNULL(Sequence,0) FROM GenerateNumber WITH (NOLOCK) ;

		SET @sAutoID	= @sPrefix + '-' + CAST(REPLACE(STR(@iSeq, @iLength), SPACE(1), '0')  AS VARCHAR(20))
		SET @iSeq = @iSeq + 1;
		UPDATE GenerateNumber SET  [Sequence] = @iSeq;
		
	END TRY
	BEGIN CATCH
		SET @sAutoID		=	@sPrefix + '-00000';
	END CATCH

	RETURN 0;
END

Result

DECLARE	@return_value int,
		@sAutoID varchar(14)

EXEC	@return_value = [dbo].[GetAutoIDNo]
		@sPrefix = N'TC',
		@iLength = 5,
		@sAutoID = @sAutoID OUTPUT

SELECT	@sAutoID as N'@sAutoID'


SQL Server Stored Procedure Generate Auto ID Auto Number

ID ที่ได้








Ex2. สร้าง Auto ID แบบทีตัวอักษร ปี, เดือน และลำดับ เช่น TC-2016-12-00001

ใน Concept ของตัวอย่างที่ 2 ให้สร้าง Table ง่าย ๆ สำหรับจัดเก็บลำดับแบบง่าย ๆ โดย Table ให้มีการแยกจัดเก็บ ปี และ เดือน และ ลำดับ โดยรายการ เดือนและปี รวมทั้งลำดับ จะมีการ Insert ลงอัตโนมัติ เมื่อขึ้น ปี หรือ เดือน ใหม่

Table : GenerateNumber
CREATE TABLE [dbo].[GenerateNumber](
	[Year] [int] NOT NULL,
	[Month] [int] NOT NULL,
	[Sequence] [int] NOT NULL,
 CONSTRAINT [PK_GenerateNumber] PRIMARY KEY CLUSTERED 
(
	[Year] ASC,
	[Month] ASC,
	[Sequence] ASC
)) ON [PRIMARY]

SQL Server Stored Procedure Generate Auto ID Auto Number

Stored Procedure : GetAutoIDNo
CREATE PROCEDURE [dbo].[GetAutoIDNo]
	@sPrefix				VARCHAR(10),
	@iLength				INT,

	@sAutoID				VARCHAR(30) OUTPUT
AS
SET DATEFORMAT DMY;  
BEGIN

	SET NOCOUNT ON;
	DECLARE	@iYear		INT = YEAR(GETDATE());
	DECLARE	@iMonth		INT = MONTH(GETDATE());
	DECLARE	@iSeq		INT = 0;
	
	BEGIN TRY
		SELECT @iSeq = ISNULL([Sequence],0) FROM GenerateNumber WITH (NOLOCK) WHERE [Year] = @iYear AND [Month] = @iMonth;
		IF @iSeq = 0
			BEGIN
				SET @iSeq = 1;
				INSERT INTO GenerateNumber ([Year],[Month],[Sequence]) VALUES (@iYear, @iMonth, @iSeq);
			END

		SET @sAutoID	= @sPrefix + '-' 
				+ CAST(REPLACE(STR(@iYear, 4), SPACE(1), '0')  AS VARCHAR(4)) + '-'
				+ CAST(REPLACE(STR(@iMonth, 2), SPACE(1), '0')  AS VARCHAR(2)) + '-'
				+ CAST(REPLACE(STR(@iSeq, @iLength), SPACE(1), '0')  AS VARCHAR(20))
		SET @iSeq = @iSeq + 1;
		UPDATE GenerateNumber SET  [Sequence] = @iSeq WHERE [Year] = @iYear AND [Month] = @iMonth;
		
	END TRY
	BEGIN CATCH
		SET @sAutoID		=	@sPrefix + '-0000-00-00000';
	END CATCH

	RETURN 0;
END

Result

DECLARE	@return_value int,
		@sAutoID varchar(30)

EXEC	@return_value = [dbo].[GetAutoIDNo]
		@sPrefix = N'TC',
		@iLength = 5,
		@sAutoID = @sAutoID OUTPUT

SELECT	@sAutoID as N'@sAutoID'


SQL Server Stored Procedure Generate Auto ID Auto Number

ID ที่มี ปี และ เดือน มาเกี่ยวข้อง

SQL Server Stored Procedure Generate Auto ID Auto Number

ID ที่มี ปี และ เดือน มาเกี่ยวข้อง

SQL Server Stored Procedure Generate Auto ID Auto Number

ในกรณีที่ขึ้น เดือน หรือ ปี ใหม่ ก็จะเริ่มนับ 1 ใหม่

SQL Server Stored Procedure Generate Auto ID Auto Number

รายการ Table ที่เกี่ยวข้อง ที่ถูก Insert อัตโนมัติ

Note!! ในตัวอย่างนี้จะส่งค่ากลับจาก Stored Procedure ในรูปแบบของ OUTPUT ฉะนั้นการอ่านค่าด้วยภาษาต่าง ๆ จะแตกต่างกันไป








PHP กับ SQL Server Stored Procedure

Visual Basic (VB.Net) เรียกใช้ EXEC SQL Server Stored Procedure

Visual C# (C# .Net) เรียกใช้ EXEC/CALL - SQL Server Stored Procedure

Java เรียกใช้ EXEC/CALL - SQL Server Stored Procedure ด้วย (JDBC)


   
Share
Bookmark.   

  By : TC Admin
  Article : บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ
  Score Rating :
  Create Date : 2016-12-28
  Download : No files
Sponsored Links
ตอนที่ 4 SVN : การเข้าร่วม Team ด้วย Member อื่น ๆ และการ Checkout ไฟล์จาก SVN Server
ตอนที่ 4 SVN : การเข้าร่วม Team ด้วย Member อื่น ๆ และการ Checkout ไฟล์จาก SVN Server
ในการใช้งาน SVN วัตถุประสงค์หลัก ๆ แล้วที่เราจะใช้ก็คือการทำงานร่วมกันเป็น Team ที่มีหลาย ๆ Member มาเกี่ยวข้อง ไม่ว่าจะเป็น SA หรือ Programmer ฉะนั้น Member ทุกคนที่จะทำการ Join เข้ามาใน Project
Rating : Update : 2015-11-10 13:28:36
สร้าง Entity Framework เพื่อติดต่อกับ Database การสร้าง Model Entities บน Visual Studio
สร้าง Entity Framework เพื่อติดต่อกับ Database การสร้าง Model Entities บน Visual Studio
สำหรับ Entity Framework ใช้งานได้กับ Application หลากหลายประเภท เช่น ASP.Net , Windows Form , Console App และอื่น ๆ รองรับภาษา VB.Net , C# และสามารถประยุกต์ใช้กับ Database ได้หลาย ๆ ประเภท ไม่ว่าจะเป็น SQL Server , MySQL, MS Access , Oracle
Rating : Update : 2015-12-02 22:43:15
Windows Form กับ DateTimePicker วิธีการ Insert ข้อมูล DateTime ลงใน Database (VB.Net,C#)
Windows Form กับ DateTimePicker วิธีการ Insert ข้อมูล DateTime ลงใน Database (VB.Net,C#)
วิธีการ Insert ข้อมูลจาก DateTimePicker บน Windows Form ลงใน Database เหตุผลที่ต้องเขียนบทความนี้เพราะยังใช้กันผิดๆ ถูกๆ ไม่ถูกต้องตาม Format ของ DateTime
Rating : Update : 2017-04-18 09:27:17
Oracle สอนเขียน Stored Procedure, Table, View, Function, Trigger บน Oracle Database
Oracle สอนเขียน Stored Procedure, Table, View, Function, Trigger บน Oracle Database
Oracle สอนเขียน Stored Procedure, Table, View, Function, Trigger บน Oracle Database
Rating : Update : 2016-01-26 09:11:15
รู้จัก Entity Framework (EF) คืออะไร ใช้ทำอะไร และมีประโยชน์อย่างไรบน .Net Framework
รู้จัก Entity Framework (EF) คืออะไร ใช้ทำอะไร และมีประโยชน์อย่างไรบน .Net Framework
การพัฒนา Application ด้วย .Net Framework เพื่อใช้งานทั่ว ๆ ไป การติดต่อกับ Database ถือเป็นหัวใจหลักในการพัฒนาโปรแกรม รองจากการวางโครงสร้างของ Application และจากประสบการณ์การเขียนโปรแกรมและผ่านโปรเจคมามาหลายตัว ทั้งขนาดเล็กคนเดียว หรือ 2-3 คน
Rating : Update : 2015-11-28 07:02:51
การเขียน Stored Procedure ทำการ Backup (สำรอง) ข้อมูลทั้งก้อนบน SQL Server Database
การเขียน Stored Procedure ทำการ Backup (สำรอง) ข้อมูลทั้งก้อนบน SQL Server Database
บทความนี้เป็นวิธีการเขียน Stored Procedure ในการ Backup ข้อมูลบน SQL Server Database โดยสามารถประยุกต์ใช้การกับตั้ง Schedule Job หรือการสั่ง Backup จากหน้า Application
Rating : Update : 2017-03-25 13:21:07
XCode Objective-C การ Convert Variable ในการรับค่าตัวแปร
XCode Objective-C การ Convert Variable ในการรับค่าตัวแปร
หวัดดีตอนบ่ายๆ ครับ ง่วงๆ แบบนี้ผมมีทริปง่ายๆ เล็กๆ แต่สำหรับมาเสนอครับ
Rating : Update : 2015-09-25 10:46:09
ThaiCreate.Com Forum

Comunity Forum Free Web Script
Jobs Freelance Free Uploads
Free Web Hosting Free Tools

สอน PHP ผ่าน Youtube ฟรี
สอน Android การเขียนโปรแกรม Android
สอน Windows Phone การเขียนโปรแกรม Windows Phone 7 และ 8
สอน iOS การเขียนโปรแกรม iPhone, iPad
สอน Java การเขียนโปรแกรม ภาษา Java
สอน Java GUI การเขียนโปรแกรม ภาษา Java GUI
สอน JSP การเขียนโปรแกรม ภาษา Java
สอน Struts การเขียนโปรแกรม Java Struts Framework
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน Yii  Framework การเขียนโปรแกรม ภาษา PHP กับ Yii
สอน .Net การเขียนโปรแกรม ภาษา .Net
Free Tutorial
สอน Google Maps Api
สอน Windows Service
สอน Entity Framework
สอน Android
สอน Java เขียน Java
Java GUI Swing
สอน JSP (Web App)
iOS (iPhone,iPad)
Windows Phone
Windows Azure
Windows Store
Laravel Framework
Yii PHP Framework
สอน jQuery
สอน jQuery กับ Ajax
สอน PHP OOP (Vdo)
Ajax Tutorials
SQL Tutorials
สอน SQL (Part 2)
JavaScript Tutorial
Javascript Tips
VBScript Tutorial
VBScript Validation
Microsoft Access
MySQL Tutorials
-- Stored Procedure
MariaDB Database
SQL Server Tutorial
SQL Server 2005
SQL Server 2008
SQL Server 2012
-- Stored Procedure
Oracle Database
-- Stored Procedure
SVN (Subversion)
แนวทางการทำ SEO
ปรับแต่งเว็บให้โหลดเร็ว

สุดยอด Source Code V2.0
 

แจ้งชำระเงิน/โอนเงิน
 

Hit Link
   


Acc : thaicreate@hotmail.com






Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2017 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
for Contact Us : [Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 084-715-5121 อัตราราคา คลิกที่นี่