SQL Server không cho phép bạn chuyển các tham số cho một thủ tục mà bạn chưa xác định. Tôi nghĩ rằng cách gần nhất bạn có thể đạt được loại thiết kế này là sử dụng các thông số tùy chọn như sau:
CREATE PROCEDURE GetTaskEvents
@TaskName varchar(50),
@ID int = NULL
AS
BEGIN
-- SP Logic
END;
Bạn sẽ cần bao gồm mọi thông số có thể có mà bạn có thể sử dụng trong định nghĩa. Sau đó, bạn có thể tự do gọi thủ tục theo một trong hai cách:
EXEC GetTaskEvents @TaskName = 'TESTTASK', @ID = 2;
EXEC GetTaskEvents @TaskName = 'TESTTASK'; -- @ID gets NULL here