Your current approach is a false optimization, and a maintenance headache. You can indeed insert/update in one stored proc, and even without passing a parameter in order to pull it off. It would go something like this:
create procedure sp_UpsertData
(
@field1 type
@field2 type
@field3 type
@field4 type
@field5 type
)
as begin
UPDATE [mytable]
SET field1=@field1
field2=@field2
field3=@field3
WHERE field4 = @field4 and field5 = @field5
IF @@ROWCOUNT = 0
begin
INSERT INTO [mytable] (field1, field2, field3, field4, field5)
VALUES (@field1, @field2, @field3, @field4, @field5)
end
end
As for the Delete or Select operations,you can group the select stuff without much push-back from DBAs, but the delete action really should be in its own stored proc as well.
Also, look into default parameters, where a parameter is set to a default value, and use that as an indication as to what type of select to perform.