Tôi đang sử dụng SQLServer cho lần đầu tiên, và trong mỗi một đơn của tạo kịch bản thủ tục của chúng tôi có một khối mã như dưới đây để loại bỏ các thủ tục nếu nó đã tồn tại:Hãy cho thả THỦ TỤC một tham số
IF EXISTS (SELECT *
FROM information_schema.routines
WHERE routine_name = 'SomeProcedureName'
AND routine_type = 'PROCEDURE'
BEGIN
DROP PROCEDURE SomeProcedureName
END
//then the procedure definition
để ngăn chặn cắt và dán mã boilerplate này trong mỗi tập tin tôi muốn đặt mã này trong thủ tục lưu trữ riêng của mình để thay vào đó là kịch bản sẽ trông như thế này:
DropIfRequired('SomeProcedureName')
//then the procedure definition
nỗ lực của tôi tại một giải pháp là:
CREATE PROCEDURE DropIfRequired
(
@procedureName varchar
)
AS
IF EXISTS (SELECT * FROM information_schema.routines
WHERE routine_name = @procedureName
AND routine_type = 'PROCEDURE')
BEGIN
DROP PROCEDURE @procedureName
END
Nhưng sau đó tôi nhận được lỗi sau:
Msg 102, Level 15, State 1, Thủ tục DeleteProcedure, Dòng 10 cú pháp sai gần '@procedureName'.
Bất kỳ ý tưởng nào về cách thực hiện những gì tôi muốn?
Giải pháp này (http://dba.stackexchange.com/q/47186/16776) để biết thêm giải pháp này. – Sam