この sproc は、「dbcc inputbuffer」コマンドを使用します。このコマンドを使用するには、「VIEW SERVER STATE」権限が必要であるか、sysadmin ロールに属しています。パラメータ名が使用されていないときにエラーを発生させることで、名前付きパラメータの要件を強制できると思います。
create procedure usp_Example
@LastName nvarchar(50),
@FirstName nvarchar(50),
@Initials nvarchar(10) = 'Default Initials'
as begin
declare @inputBuffer table (eventtype nvarchar(30), parameters int, eventinfo nvarchar(255))
declare @execStatement nvarchar(255)
--get sql for sproc execution
insert into @inputBuffer
exec ('dbcc inputbuffer (' + @@spid + ') with no_infomsgs')
select top 1 @execStatement = eventinfo from @inputBuffer
--get named parameters
select s.name
from sys.all_parameters s where s.object_id = @@PROCID and CHARINDEX(s.name,@execStatement) > 0
--do stored proc specific operations
end
go
--test with no parameter naming
exec usp_Example 'LastName','FirstName','Initials'
go
--test with parameter naming
exec usp_Example @lastName = 'LastName',@Firstname = 'FirstName',@Initials = 'Initials'
go
--test with parameter naming and default value
exec usp_Example @LastName = 'LastName',@FirstName = 'FirstName'
go