 |
|
สอบถามเกี่ยวกับคำสั่งที่ใช้ในการเขียน Stored Procedure |
|
 |
|
|
 |
 |
|
SSMS GO Command
Put the Right GO to the Right batch.
batch แปลว่า ชุดคำสั่ง
GO แปลว่า ตัวแบ่ง
คุณแบ่งชุดคำสั่งออกเป็น 3 ชุด (แล้วแต่จะแบ่งออกเป็นกี่ชุดคำสั่ง)
จะเีรียงแบบไหนก็ได้ แต่ต้องอยู่บนพื้นฐานข้อเท็จจริง เช่นจัดเรียงเป็น
A, B, C หรือ B, A, C หรือ C, B, A เป็นต้น
ในกรณีนี้คุณจัดเรียงชุดคำสั่งเป็น A, B, C
ชุด A = บรรทัดที่ 1 - 4
ชุด B = บรรทัดที่ 8 - 13
ชุด C = บรรลัยที่ 17
ถ้าคุณเอาชุด B ขึ้นก่อนมัน มันทำงานได้แค่ครั้งเดียว (เรียงชุดได้ไม่ดี)
Code (SQL)
CREATE PROCEDURE [dbo].[ap_get_roles_in_system]
(
@system_id int
)
AS
SELECT * FROM roles
GO
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ap_get_roles_in_system')
BEGIN
DROP Procedure [dbo].[ap_get_roles_in_system]
END
GO
GRANT EXEC ON [dbo].[ap_get_roles_in_system] TO PUBLIC
GO
คิดแบบง่ายฯ ครับ A, B, C == อยากอึ๊บไม่จำกัดครั้ง
1. หน้าโรงเรียน/มหาวิทยาลัย หาเจ้าสาวมาคนหนึ่ง นี่คือชุด A
2. ต้องแต่งงานก่อน นี่คือชุด B
3. เอา... ป่าบวบป่ามัน/ม่านรูด หรือที่ไหนก็ได้ นี่คือชุด C
---- โลกไม่ติเตียนเพราะนี่คือภรรยาของคุณ
GANT คืออะไร? PUBLIC คืออะไร?
สั้นฯง่ายฯ : คุณอนุญาติให้ ชายทั้งโลก(หนึ่งในนั้นมีผมด้วย) เรียกภรรยาของคุณว่า เมียจ๋า
|
 |
 |
 |
 |
Date :
2013-10-05 05:24:08 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
การจะแบ่งออกเป็นกี่ชุดคำสั่ง (Batch) แล้วแต่ความเหมาะสม
แต่จากคำถามของคุณ
อย่างน้อยต้องแบ่งออกเป็น 2 ชุด หรือมากกว่านั้น มันถึงจะทำงานได้
Code (SQL) แบ่งออกเป็น 2 ชุด
IF EXISTS (SELECT * FROM sysobjects WHERE type = 'P' AND name = 'ap_get_roles_in_system')
BEGIN
DROP Procedure [dbo].[ap_get_roles_in_system]
END
GO
CREATE PROCEDURE [dbo].[ap_get_roles_in_system]
(
@system_id int
)
AS
SELECT * FROM roles
GRANT EXEC ON [dbo].[ap_get_roles_in_system] TO PUBLIC
[x] ไม่มีคำสั่ง GO ให้ถือว่าเป็น 1 ชุดคำสั่ง
เจริญนมนะโยม คำคมจากหลวงพี่มีเมียจนทุกวัน
|
 |
 |
 |
 |
Date :
2013-10-05 05:34:01 |
By :
ผ่านมา |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|