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



บทความ


Page Ranking Tool

การเขียน store procedure บน ms sql server ตอนที่ 3 store procedure แบบที่มีการรับค่า parameter


สอน SQL Server
> การเขียน store procedure บน ms sql server ตอนที่ 3 store procedure แบบที่มีการรับค่า parameter


จากบทความตอนที่แล้วที่ได้กล่าวถึง รูปแบบ store procedure และตัวอย่างการเขียน store procedure แบบทั่วๆไป
สำหรับบทความในตอนที่ 3 นี้จะเป็นการเขียน store procedure แบบที่มีการรับค่า parameter นะครับ
มาดูตัวอย่างเริ่มต้นการเขียน Store Procedure แบบที่มีการรับค่า parameter กันนะครับ


  Code
-- การสร้าง Stored Procedure แบบรับค่าParameter
Create Procedure sp_fullemployee_by_emp_code (
@parameter1 datatype ,
@parameter2 datatype ,
@parameter3 datatype ,
…
)
As
BEGIN
คำสั่ง Sql Statement
END



ตัวอย่างการสร้าง Store procedure แบบมี parameter นะครับ จะเป็นการสร้าง store procedure สำหรับ แสดงข้อมูล employee แบบที่มีการใส่เงื่อนไข ตาม emp_code ดังโคดด้านล่าง


  Code

create procedure sp_fullemployee_by_emp_code (
@emp_code varchar(5)
)
AS
BEGIN
select
d.dep_code,d.dep_name,e.emp_code,e.emp_name,e.emp_surname,e.emp_tel,e.emp_email
from tbl_department d left join tbl_employee e on e.dep_code=d.dep_code
where e.emp_code=@emp_code
END
-- การเรียกใช้งาน Stored procedures แบบรับค่า parameter
exec sp_fullemployee_by_emp_code 'E0002'
-- หรือ ส่งค่าให้กับ parameter ที่ต้องการ โดยการกำหนดชื่อดังเช่นตัวอย่างด้านล่างก็ได้ ตัวอย่างนี้จะใช้บ่อยๆ ในกรณี สร้าง Store procedure แบบกำหนดค่าเริ่มต้นให้กับ parameter
exec sp_fullemployee_by_emp_code @emp_code='E0002'



2.1 Stored Procedures แบบกำหนดค่าเริ่มต้นให้ Parameter ในการสร้าง Store procedure แบบนี้จะเอาไว้สำหรับ Store procedure ที่มีการรับหลายๆ parameter และมี บาง parameter ที่ค่าข้อมูลเหมือนๆกัน จึงกำหนดเป็นค่าเริ่มต้นได้ จะทำให้เวลาเรียกใช้งาน จะได้ง่ายขึ้น ไม่ต้องใส่ parameter ให้ครบทุกตัว



  Code
-- การสร้าง Stored Procedure แบบกำหนดค่าเริ่มต้นให้ Parameter
Create Procedure sp_fullemployee_by_emp_code (
@parameter1 datatype ,
@parameter2 datatype=Default Value,
@parameter3 datatype ,
…
)
As
BEGIN
คำสั่ง Sql Statement
END



ตัวอย่างเช่น การสร้าง Store procedure สำหรับเพิ่มข้อมูลพนักงานใหม่ (จากตัวอย่าง ผมจะแสดงให้ดูถึงข้อมูลจึงใช้คำสั่ง select @parameter นะครับ หากจะใช้จริง ก็เขียน ตรง Sql statement เป็น insert ไปแทน


  Code
create procedure sp_insert_employee (
@emp_code varchar(5) ,
@emp_name varchar(50) ,
@emp_surname varchar(50) ,
@emp_tel varchar(20)='-' , -- กำหนดค่าเริ่มต้นเป็น -
@emp_email varchar(60)='-' , -- กำหนดค่าเริ่มต้นเป็น -
@dep_code varchar(2)='01' -- กำหนดค่าเริ่มต้นเป็นฝ่าย Account
)
AS
BEGIN
select @emp_code , @emp_name,@emp_surname,@emp_tel,@emp_email,@dep_code
END
-- การเรียกใช้งาน เมื่อเรา สร้าง Store procedure แบบกำหนดค่าเริ่มต้นให้ parameter ทำให้เรา จะใส่ข้อมูลใน parameter @emp_tel , @emp_email , @dep_code หรือไม่ก็ได้ เช่น
exec sp_insert_employee 'E0006','ทดสอบ','นามสกุล'
จากตัวอย่าง จะเห็นว่า ผมกรอกเข้าไปเพิ่มเพียง 3 parameter เท่านั้น ส่วนที่เหลือจะเป็นค่าเริ่มต้นที่กำหนดไว้

หรือ หากต้องการเปลี่ยนค่า ให้กับค่าเริ่มต้น บาง parameter เราก็สามารถทำได้เช่น
exec sp_insert_employee 'E0006','ทดสอบ','นามสกุล' ,@dep_code='02'
จากตัวอย่าง ผมต้องการเปลี่ยน @dep_code เท่านั้นก็สามารถทำได้ โดยการระบุชื่อ Parameter ที่ต้องการ แล้วใส่ค่า value เข้าไปเท่านั้นเองครับ



2.2 Stored Procedures แบบ Output Parameter ใช้ในกรณีที่เราต้องการ ให้ Store procedure มีการส่งค่าบางอย่างกลับมาให้เรานะครับ
ซึ่งการใช้วิธีนี้ เราสามารถ สร้างตัวแปร output ส่งค่ากลับมาได้หลายตัวแปร จะต่างจาก การสร้าง Store procedure แบบ return ซึ่ง ส่งค่ากลับมาได้ ตัวเดียวนะครับ


  Code
-- การสร้าง Stored Procedure แบบ Output Parameter
Create Procedure sp_fullemployee_by_emp_code (
@parameter1 datatype ,
@parameter2 datatype=Default Value,
@parameter3 datatype output,
…
)
As
BEGIN
คำสั่ง Sql Statement
END



ตัวอย่างเช่น การสร้าง Store procedure สำหรับค้นหาข้อมูลพนักงาน ที่ต้องการค่า output คือจำนวนที่ค้นหาพบ ดังนั้นเราจึงต้องให้มี Output parameter เป็นจำนวนที่ค้นหาพบ จึงเขียน Store procedure ได้ดังนี้



  Code
create procedure sp_search_employee(
@txtsearch varchar(50),
@ItemCount int output
)
AS
BEGIN
-- query ข้อมูล
select * from tbl_employee
where (emp_code + ' ' + emp_name + ' ' + emp_surname) like '%'+@txtsearch+'%'
-- นับจำนวน
set @ItemCount=(select count(*) from tbl_employee
where (emp_code + ' ' + emp_name + ' ' + emp_surname) like '%'+@txtsearch+'%'
)
END



การเรียกใช้งาน เนื่องจาก Store procedure แบบ output parameter นี้การเรียกใช้งาน เราจึงต้องมีการสร้างตัวแปร ขึ้นมาเพื่อรับ ค่า output ด้วย รูปแบบการเรียกใช้งานจึงเป็นเช่นนี้
Declare @count int
exec sp_search_employee 'ส', @count output

จะเห็นว่า เรามีการ Declare ตัวแปร @count มีชนิดเป็น int ชนิดเดียวกับ @ItemCount ที่อยู่ใน store procedure แล้ว เราจะใช้รูปแบบการกับคือ การ ใส่ตัวแปร แล้วเติม output เข้าไปในตำแหน่งของ output parameter ของ store procedure

เมื่อเรากำหนดข้อมูลได้เรียบร้อยแล้ว เราสามารถที่จะ select @count เพื่อเห็น ผลลัพย์ของ output parameter ได้นะครับ

select @count

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

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

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