Bạn có thể viết một truy vấn như sau:
IF OBJECT_ID('ProcedureName','P') IS NOT NULL
DROP PROC ProcedureName
GO
CREATE PROCEDURE [dbo].[ProcedureName]
...your query here....
Để cụ thể hơn về cú pháp trên:
OBJECT_ID là số id duy nhất cho một đối tượng trong cơ sở dữ liệu, điều này được SQL Server sử dụng nội bộ. Vì chúng tôi đang truyền cho RoutureName, theo sau là loại đối tượng P , thông báo cho SQL Server rằng bạn sẽ tìm thấy đối tượng có tên là RoutureName , thuộc loại thủ tục, tức là
Truy vấn này sẽ tìm thủ tục và nếu có sẵn, nó sẽ bỏ nó và tạo một thủ tục mới.
Để biết thông tin chi tiết về các loại OBRI_ID và Object, vui lòng truy cập: SYS.Objects
Ít nhất nếu bạn thả nó, bạn biết bạn phải thêm lại các quyền. Nếu bạn chạy sql này, bạn sẽ không biết liệu sproc có quyền chính xác hay không vì bạn sẽ không biết liệu bạn đã tạo ra nó hay thay đổi nó.
– Hoàng Gia Thịnh 12:03:55 25/01/2013@Liazy giải pháp đơn giản là thêm mã vào
– Ngô Xuân Nhi 17:29:32 24/07/2013if object_id('YourSp') is null BEGIN ... END
để thêm quyền thích hợp sau khi tạo thủ tục được lưu trữ.nghĩ rằng câu trả lời khác hoàn chỉnh hơn một chút vì nó chỉ kéo id đối tượng cho các thủ tục được lưu trữ. không phổ biến để có cùng tên cho các loại khác nhau nhưng điều đó có thể xảy ra
– Lê Từ Dung 14:08:00 25/08/2014