Câu hỏi đơn giản, như tiêu đề cho thấy:Cú pháp để thả một thủ tục lưu sẵn trong SQL Server 2000 là gì?
Cú pháp để thả thủ tục lưu trữ (SP) trong SQL Server 2000 là gì, trước tiên hãy kiểm tra xem SP có tồn tại không?
Vui lòng cung cấp mã đầy đủ.
Câu hỏi đơn giản, như tiêu đề cho thấy:Cú pháp để thả một thủ tục lưu sẵn trong SQL Server 2000 là gì?
Cú pháp để thả thủ tục lưu trữ (SP) trong SQL Server 2000 là gì, trước tiên hãy kiểm tra xem SP có tồn tại không?
Vui lòng cung cấp mã đầy đủ.
Microsoft khuyến cáo sử dụng object_id()
chức năng, như vậy:
IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourProcedure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[YourProcedure]
GO
.
object_id()
giúp giải quyết xung đột của chủ sở hữu. Nếu bạn làm
SELECT name FROM sysobjects WHERE name = 'my_procedure'
, bạn có thể thấy nhiều quy trình khác nhau có cùng tên - tất cả cho các chủ sở hữu khác nhau.
Nhưng, SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]')
sẽ chỉ hiển thị cho bạn chủ sở hữu/người dùng hiện tại nếu có nhiều thủ tục theo tên đó.
Tuy nhiên, luôn luôn chỉ định chủ sở hữu đối tượng (mặc định là dbo
). Điều này không chỉ tránh những tác dụng phụ khó chịu mà còn nhanh hơn một chút.
Như thế này:
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'my_procedure' AND type = 'P')
DROP PROCEDURE my_procedure GO
Hy vọng rằng sẽ giúp!
Một phương pháp đơn giản hơn một chút mà không đi đến bảng hệ thống:
IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO
Trong SQL SERVER 2008
, nếu bạn muốn thả một thủ tục lưu trữ chỉ cần viết lệnh dưới đây ....
DROP PROC Procedure_name
DROP PROC dbo.spInsertUser
Hy vọng nó giúp ..
Tôi đang sử dụng MS SQL 2012, cú pháp này làm việc cho tôi DROP PROCEDURE [dbo]. [YourProcedure] –