วันพุธที่ 2 กรกฎาคม พ.ศ. 2551

การใช้ Fetch

เมื่อวานพยายามที่หาวิธีการ วน loop เข้าไปในแต่ละ row ที่ select มาได้ก็หาอยู่นานก็เจอคำสั่ง Fetchเข้า

เลยลองใช้ดู แหมน่าจะใช้มาตั้งนานแล้ว จะได้ไม่ต้องไปเขียนใน code behind

ขั้นตอนการใช้ก็ไม่มีไร

อันดับแรก ต้องทำการประกาศตัวแปร เป็น Curser ก่อน ดังนี้

DECLAREชื่อตัวแปรCURSOR FOR คำสั่ง select data(*** ต้องการใช้ค่าอะไรที่ select มาได้ ใน loop ควรระบุให้ดึงค่านั้นด้วย)

Table Pro_Out
--------------------------
Job_Pro_ID
int
Count_Unit_ID
int
Pro_Out_Serial
int
Job_ID
int
Tran_ID
int
Pro_Out_Parent
int
Pro_Out_Barcode varchar(50
)
Pro_Out_Lot varchar(
50)
Pro_Out_SerialNo varchar(50
)
Pro_Confirm bit

เช่น มี table Pro_Out อยู่ แล้ว เราต้องการใช้ field pto_out_serial ใน loop เราจะทำการประกาศดังนี้

DECLARE contact_cursor CURSOR FOR select pro_out_serial from pro_out

อันดับที่ 2 ทำการ open cursur

OPEN ชื่อตัวแปรcursur

จากตัวอย่างก็จะเป็น OPEN contact_cursor

อันดับที่ 3 เริ่มทำการ fetch และให้ค่าที่ select มากับ ตัวแปรตัวหนึ่ง
โดยก่อนหน้าเราต้องทำการประกาศตัวแปรไว้ก่อนดังนี้

declare @serial int

FETCH NEXT FROM contact_cursor
INTO @serial

อันดับต่อมา เราจะเริ่มใช้ loop while เข้ามาช่วย ดังนี้
ใช้ while loop เข้ามา check Fetch_status ว่ามีrow ต่อไปให้ fetch หรือไม่

WHILE @@FETCH_STATUS = 0
BEGIN

--ภายในloop ก็อาจจะทำการ print ค่า หรือ แล้วแต่เราว่าต้องการทำอะไร
--อาจจะเป็นการเรียกใช้ procedureแล้วส่งค่านี้ให้กับโปรแกรมก็ได้
PRINT @list

--ทำการfech row ต่อไป
FETCH NEXT FROM contact_cursor
INTO @list
END

และสุดท้าย ที่ไม่ควรลืมค่า ทำการ close cursur และ deallocate

CLOSE contact_cursor
DEALLOCATE contact_cursor


ที่มา
http://myknowledge.exteen.com/category/Develop/page/4
or
http://myknowledge.exteen.com/category/Develop