รับทำเว็บไซต์ครบวงจร
เลือกภาษา Thai English     facebook
รายการหลัก



บทความ


Page Ranking Tool

การเขียน store procedure บน ms sql server ตอนที่ 1


สอน SQL Server
> การเขียน store procedure บน ms sql server ตอนที่ 1


Store Procedure คืออะไร?
หลายคนถามว่า Store Procedure คืออะไร? ผมก็จะขอนิยามความหมายซักนิดนะครับ Store Procedure นั้นเป็นโปรแกรมที่เก็บอยู่ในฐานข้อมูลนั่นเอง ซึ่งการจะเขียน Store procedure นั้นเราจะต้องดูด้วยว่า โปรแกรมฐานข้อมูล ที่เราใช้อยู่นั้นมี ส่วนของ Store procedure อยู่ด้วยหรือเปล่า ส่วนใหญ่จะมีกับฐานข้อมูลใหญ่ เช่น Oracle , Ms sql server , Mysql เวอร์ชั่นใหม่ๆ และอื่นๆ

ทำไมเราถึงจำเป็นต้องใช้ Store Procedure
ถามว่าทำไมต้องใช้ อันนี้ที่จริงแล้ว ถ้าไม่ใช้ เราก็ยังสามารถเขียนโปรแกรม ติดต่อดาต้าเบสดึงข้อมูลได้เหมือนกัน ถ้าเรา ใช้คำสั่ง select * from table ดึงข้อมูลเพียง table เดียวคำสั่งสั้นๆ คงไม่เห็นถึงความแตกต่างเท่าไหร่ แต่เมื่อไหร่ ที่ต้องมีการทำงาน ในหลายๆ table พร้อมๆกัน ซัก 4-5 table เราต้อง join table อีกเพียบ หรืออาจจะมี sub query อยู่ด้วย ถ้าเมื่อไหร่ เราต้องทำงานแบบนี้ การส่งคำสั่ง Query ปริมาณมหาศาล ทำให้เกิด Traffic ระหว่าง application กับ database ขนาดใหญ่มาก และส่งผลให้ โปรแกรมเราทำงานช้าจนน่าเกลียดเลยทีเดียว

แต่หากเราใช้ store procedure ในการดึงข้อมูล จะลดปัญหา Traffic ไปได้มาก เนื่องจาก Store Procedure นั้นเป็น Database object ที่จะเก็บในรูปแบบ Compile แล้วและมีการทำงานแบบ Sql Statement เรียบร้อย การทำงานจะตกอยู่กับ database server ดังนั้นเราจึงสามารถใช้คำสั่ง Query ได้หลายตัวพร้อมๆกัน เพื่อให้ได้ผลลัพธ์ตามที่เราต้องการ จึงทำให้ performance ของโปรแกรมเราดีขึ้นอย่างมากมาย

การเขียน Store procedure ใน Ms Sql Server นั้นเราจะใช้ภาษา T-sql ในการเขียน ซึ่งจิงๆแล้วก็เหมือนกันเขียน Query พวก select , insert , update , delete นั่นแหละครับ เพียงแต่ T-sql นั้นมี Control Structure พวก If , Case When , While และอื่นๆอยู่ด้วยนะครับ ทำให้เราสามารถเขียนโปรแกรมบนฐานข้อมูลได้สะดวกมากมายยิ่งขึ้น

ประเภทของ Store Procedure นั้นมี 3 ประเภทคือ
1. System Store Procedure คือ Store Procedure ของระบบ เช่น sp_helpdb ใช้เพื่อดูรายละเอียดของฐานข้อมูล เป็น Store procedure ที่มีอยู่แล้วในระบบ
2. Extended Store Procedure เช่น xp_cmdshell
3. User Store Procedure คือ Store procedure ที่เราสร้างขึ้นมาใช้งานเอง

ในที่นี้ผมจะขออ้างอิง ฐานข้อมูล Ms Sql Server นะครับเนื่องจากเป็นฐานข้อมูลที่ผมถนัด และที่เราจะอธิบายคือการ สร้าง User Store procedure
ขั้นแรก เราต้องเตรียมฐานข้อมูลและสร้าง ตารางตัวอย่างพร้อมข้อมูลไว้สำหรับการทดสอบนะครับ ให้ใช้คำสั่ง Sql ด้านล่างนี้ในการสร้าง table และ ข้อมูลทดสอบ
สร้าง ตาราง และข้อมูลที่ใช้ในตัวอย่าง

  Code

-- สร้าง table tbl_department ทดสอบ
CREATE TABLE [dbo].[tbl_department](
[dep_code] [varchar](2) COLLATE Thai_CI_AS NOT NULL,
[dep_name] [varchar](50) COLLATE Thai_CI_AS NULL,
CONSTRAINT [PK_tbl_department] PRIMARY KEY CLUSTERED
(
[dep_code] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
-- เพิ่มข้อมูลทดสอบใน tbl_department
insert into tbl_department values ('01','Account')
insert into tbl_department values ('02','Marketing')
insert into tbl_department values ('03','Information Technology')

-- สร้าง table tbl_employee
CREATE TABLE [dbo].[tbl_employee](
[emp_code] [varchar](5) COLLATE Thai_CI_AS NOT NULL,
[emp_name] [varchar](50) COLLATE Thai_CI_AS NULL,
[emp_surname] [varchar](50) COLLATE Thai_CI_AS NULL,
[emp_tel] [varchar](20) COLLATE Thai_CI_AS NULL,
[emp_email] [varchar](60) COLLATE Thai_CI_AS NULL,
[dep_code] [varchar](2) COLLATE Thai_CI_AS NULL,
CONSTRAINT [PK_tbl_employee] PRIMARY KEY CLUSTERED
(
[emp_code] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
-- เพิ่มข้อมูลทดสอบใน tbl_employee
insert into tbl_employee values ('E0001','สราวุธ','จงเจริญมั่นคง','081627xxxx','<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />nuijang20@hotmail.com','03')
insert into tbl_employee values ('E0002','สุรเดช','ศรีเจริญ','081761xxxx','deth@hotmail.com','01')
insert into tbl_employee values ('E0003','หิรัญ','ศรีสุพรรณ','081665xxxx','hirun@hotmail.com','02')
insert into tbl_employee values ('E0004','อ่อนนุช','ชื่อซอยจ๊ะ','081555xxxx','onnuch@hotmail.com','02')
insert into tbl_employee values ('E0005','บางนา','ชื่อถนนจ๊ะ','081222xxxx','bangna@hotmail.com','02')


เมื่อเตรียมข้อมูลเรียบร้อยแล้วทีนี้ก็จะเข้าสู่การเขียน Store procedure ในตอนต่อไปนะครับ

refer: http://devzonedd.designweb2you.com/viewthread.php?tid=80&extra=page%3D1

Short URL click!
<< กลับคืน : เข้าชม 28,391 ครั้ง : ขึ้นไปด้านบน

รับทำเว็บไซต์ รับสร้างเว็บไซต์ รับออกแบบเว็บ รับเขียนเว็บ รับสอนทำเว็บ รับเช่า hosting รับเช่าพื้นที่เว็บไซต์ จดชื่อเว็บ รับโปรโมทเว็บไซต์ รับดูแลเว็บ SiteMap
สปริงเกอร์http://www.xn--22c2c4blb9n.xn--o3cw4h/