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,036

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
ตอนที่ 7 : การใช้ Cursor บน Stored Procedure (SQL Server : Stored Procedure)
ตอนที่ 7 : การใช้ Cursor บน Stored Procedure (SQL Server : Stored Procedure)
สำหรับ Cursor เป็นการประกาศตัวแปร (Variable) ชนิด Cursor ซึ่งถ้าจะให้เข้าใจง่าย ๆ ก็คือ เป็นตัวแปรที่ได้จากค่าในขณะนั้น ๆ ที่ประกอบด้วยหลาย Column และ Index ในรูปแบบของ Recordset ที่สามารถกำหนด Block
Rating : Update : 2015-09-30 08:51:02
List(T) คืออะไร Generic Class ของ List ใช้งานกับ Entity Framework และ LINQ to Entities
List(T) คืออะไร Generic Class ของ List ใช้งานกับ Entity Framework และ LINQ to Entities
เป็น Generic Type ของ List(T) ที่ใช้สำหรับการจัดการ Collection วัตถุมีรูปแบบเหมือนกับ Array แต่เก็บหลายมิติ ตามชนิดและ Data Type ของ Object ที่ต้องการเก็บ แต่ List เป็นมากกว่ากว่า Array คือ List สามารถ จัดการ Index
Rating : Update : 2015-12-11 22:34:17
ตอนที่ 4 : การสร้างตัวแปร Declare Variable บน Stored Procedure (SQL Server : Stored Procedure)
ตอนที่ 4 : การสร้างตัวแปร Declare Variable บน Stored Procedure (SQL Server : Stored Procedure)
การสร้างตัวแปรบน Stored Procedure เป็นพื้นฐานที่เราจำเป็นจะต้องรู้และใช้งานให้ถูกต้อง เพราะค่าจะถูกหรือผิด ชนิดของตัวแปรนั้นค่อนข้างจะสำคัญมาก เพราะตัว Database ของ SQL Server
Rating : Update : 2015-09-22 12:21:43
ตอนที่ 1 : รู้จักและการสร้าง Stored Procedure บน MySQL (MySQL : Stored Procedure)
ตอนที่ 1 : รู้จักและการสร้าง Stored Procedure บน MySQL (MySQL : Stored Procedure)
เชื่อหรือไม่ว่า MySQL ที่เป็นฐานข้อมูลที่ถูกใช้มากที่สุด แต่กลับเป็น Database ที่คนให้ความสำคัญกับ Stored Procedure นั้นน้อยมาก แมกระทั่งการใช้งาน View ซึ่งเป็นฟีเจอร์ที่มีประโยชน์มากก็ยังถูกละเลยไม่ให้ความสำคัญ อาจะเป็นสาเหตุเพราะ MySQL เพิ่งจะออก Feature
Rating : Update : 2015-12-21 10:22:48
ใช้ reCAPTCHA กับ php ป้องกัน Spam bot ด้วยการยืนยันตัวบุคคล (PHP)
ใช้ reCAPTCHA กับ php ป้องกัน Spam bot ด้วยการยืนยันตัวบุคคล (PHP)
วิธีการใช้ reCAPTCHA เพื่อป้องกัน Spam bot หรือการยืนยันตัวบุคคล นำไปประยุกต์ได้เช่น การโพสข้อมูล การอ่านหรือดาวน์โหลดข้อมูล
Rating : Update : 2017-03-24 17:37:42
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
ดาวน์โหลดติดตั้ง Visual Studio 2015 for Desktop, Web, Windows และ Team Foundation
ดาวน์โหลดติดตั้ง Visual Studio 2015 for Desktop, Web, Windows และ Team Foundation
ออกมาได้ซะพักแล้ว Visual Studio 2015 ซึ่งใน Version Express ถูกแบ่งออกเป็นหลายตัวด้วยกันเช่น for Desktop,Web, Windows และ Team Foundation
Rating : Update : 2017-03-25 13:30:15
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 03
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 อัตราราคา คลิกที่นี่