จากตัวอย่างคำสั่งดานล่างมีคำถามครับ
1. ทำไมถึงต้องใช้ GO 3 ตัว ถ้าใช้แค่ GO ตัวสุดท้ายที่เดียวผลลัพธ์จะได้เหมือนกันหรือไหม
2. จากคำสั่งนี้ "GRANT EXEC ON [dbo].[ap_get_roles_in_system] TO PUBLIC"
GRANT หมายถึงอะไรหรอครับ
TO PUBLIC หมายถึงอะไรหรอครับ
รบกวนด้วยนะครับ
Code (SQL)
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
GO
GRANT EXEC ON [dbo].[ap_get_roles_in_system] TO PUBLIC
GO
Tag : .NET, Ms SQL Server 2008, Win (Windows App), C#, VS 2008 (.NET 3.x)
Date :
2013-10-04 09:09:40
By :
Agility
View :
940
Reply :
2
No. 1
Guest
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 คืออะไร? สั้นฯง่ายฯ : คุณอนุญาติให้ ชายทั้งโลก(หนึ่งในนั้นมีผมด้วย) เรียกภรรยาของคุณว่า เมียจ๋า
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