Just posting an answer to this forum just in case anyone else hits the problem.
The return value from a stored procedure is always an integer and it was never intended to pass back programmatic values. They are for status and are used for communicating things like warnings and errors within the data or code. By convention, a 0 (zero) means everything is OK.
You can pass back integer values in the 'return' statement by passing an optional integer parameter to RETURN.
CREATE PROCEDURE Tryout2
--The variable you assign this to must be declared in the batch, stored procedure, or function before it is used in an EXECUTE statement.
DECLARE @Return INT
EXECUTE @Return =Tryout2
When you google for '@return_status' you'll see that it is an optional integer variable that stores the return status of a module.
In order to pass XML, or any other type of data, from a stored procedure you must use Outout Variables as has already been said. They are extraordinarily useful.
Phil FactorSimple Talk