Yes, although I think you'd be better off writing it as a recursive function, since it does no updating and returns a single literal value.
Not only that, but you can embed it into select statements for any table (even for multiple columns in the same select statement) and not have to worry about having to retrieve your result and THEN call this stored proc.
Anyway, here are examples of each implementation.
First, as a stored proc:
create procedure dbo.usp_Initials
(@myDesc as varchar(50))
declare @inits varchar(50)
declare @pos int
select @pos = 1, @inits = ''
while @pos <= LEN(@myDesc)
select @inits = @inits + substring(@myDesc, @pos, 1)
select @pos = CHARINDEX(' ', @myDesc, @pos + 1)
if @pos = 0
set @pos = @pos + 1