If you are forced to use stored procedure to implement what you have asked, you can simply save the found root value in a variable and pass it along.
There is no simpler way unless you use a UDF (user-defined function) like others have mentioned.
This is one of the simplest answers when using stored procedure because you cannot pass stored procedure directly to the UPDATE
statement. There is no interpolation like in other languages like C# or Java.
declare @root int
-- 1) Return the root through output parameter
exec find_root @id, @root out
-- or make the sproc to return the root value
exec @root = find_root @id
UPDATE [dbo].[alerts]
SET [created_in_variant] = @root