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

Registered : 104,212

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
ตอนที่ 15 : PHP เรียกใช้ EXEC/CALL - SQL Server Stored Procedure ด้วย sqlsrv และ pdo
ตอนที่ 15 : PHP เรียกใช้ EXEC/CALL - SQL Server Stored Procedure ด้วย sqlsrv และ pdo
ในหัวข้อนี้เราจะมาเรียนรู้วิธีการเรียกใช้งาน Stored Procedure ของ SQL Server Database ด้วย PHP ซึ่งในการเรียกใช้งาน Stored Procedure จะต้องใช้ function ของ sqlsrv หรือในฟังก์ชั่นรุ่นใหม่ ๆ เช่น PDO ส่วนการเรียกนั้น เราสามารถใช้คำสั่ง EXEC procedure_name() ได้ทันที
Rating : Update : 2015-11-14 07:52:14
ตอนที่ 4 : การสร้างตัวแปร Declare Variable บน Stored Procedure (MySQL : Stored Procedure)
ตอนที่ 4 : การสร้างตัวแปร Declare Variable บน Stored Procedure (MySQL : Stored Procedure)
การสร้างตัวแปร MySQL บน Stored Procedure เป็นพื้นฐานที่เราจำเป็นจะต้องรู้และใช้งานให้ถูกต้องในการที่จะเขียน Stored ให้ทำงานอย่างถูกต้อง เพราะค่าจะถูกหรือผิด ชนิดของตัวแปรนั้นค่อนข้างจะสำคัญมาก เพราะตัว Database ของ MySQL
Rating : Update : 2016-01-06 19:09:47
รู้จัก Composer คืออะไร การติดตั้งบน PHP Composer  เช่น XAMPP , Appserv และอื่นๆ
รู้จัก Composer คืออะไร การติดตั้งบน PHP Composer เช่น XAMPP , Appserv และอื่นๆ
รู้จัก Composer คืออะไร การติดตั้งบน PHP Composer เช่น XAMPP , Appserv และอื่นๆ
Rating : Update : 2017-03-18 22:41:17
Loop and Get Data (LINQ, Entity Framework)
Loop and Get Data (LINQ, Entity Framework)
ในการอ่านข้อมูลจาก Model Entities เราสามารถนำค่า Result ที่ได้ไปใช้กับ DataSource ใน Control หลาย ๆ ตัวได้ในทันที หรืออีกวิธีก็จะใช้การ Loop เพื่อแสดงข้อมูลใน Item ซึ่งปกติแล้วจะสามารถใช้ได้ทั้งการอ้างถึง index ด้วย for หรือจะใช้ loop
Rating : Update : 2015-12-11 22:35:03
jQuery Datepicker และ Date Diff การใช้ Datepicker และการหาค่าต่างระหว่าง 2 วันที่
jQuery Datepicker และ Date Diff การใช้ Datepicker และการหาค่าต่างระหว่าง 2 วันที่
บทความเทคนิคเล็ก ๆ น้อย ๆ เกี่ยวกับการใช้ jQuery Datepicker จำนวน 2 ช่อง และการหาค่า Date Diff เมื่อเลือกวันที่เรียบร้อยแล้ว
Rating : Update : 2017-03-25 13:21:37
แจก PHP Upload class อัพโหลดเรื่องง่าย พร้อมออพชั่นความปลอดภัย
แจก PHP Upload class อัพโหลดเรื่องง่าย พร้อมออพชั่นความปลอดภัย
แจก PHP Upload class เพื่อใช้ในการอัพโหลดไฟล์ ไม่ว่าจะไฟล์เดี่ยวหรือครั้งละหลายไฟล์ พร้อมมีออพชั่นความปลอดภัยต่างๆ
Rating : Update : 2016-05-19 07:31:43
[Code] โปรแกรม คำนวนส่วนลดของราคาสินค้า แบบมือใหม่ (VB.Net)
[Code] โปรแกรม คำนวนส่วนลดของราคาสินค้า แบบมือใหม่ (VB.Net)
กำลังหัดลองเขียนพวก VB ค่ะ เลยเอาโค้ดที่หัดทำมาโพสเเปะๆไว้ ให้คนอื่นที่สนใจด้านนี้มาศึกษา
Rating : Update : 2017-07-06 06:30:49
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
สอน jQuery การเขียนโปรแกรม ภาษา jQuery
สอน .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 05
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 , 08-9968-0655 อัตราราคา คลิกที่นี่