SQL Server non consente di passare parametri a una procedura non definita. Penso che il più vicino possibile a questo tipo di design sia utilizzare parametri opzionali come questo:
CREATE PROCEDURE GetTaskEvents
@TaskName varchar(50),
@ID int = NULL
AS
BEGIN
-- SP Logic
END;
Dovresti includere ogni possibile parametro che potresti utilizzare nella definizione. Quindi saresti libero di chiamare la procedura in entrambi i modi:
EXEC GetTaskEvents @TaskName = 'TESTTASK', @ID = 2;
EXEC GetTaskEvents @TaskName = 'TESTTASK'; -- @ID gets NULL here