You might also try this with a TVF.
CREATE FUNCTION dbo.FnGetDefinition(@ObjId INT)
RETURNS @DefTable TABLE(ObjectDef VARCHAR(MAX))
AS
BEGIN
INSERT INTO @DefTable SELECT object_definition(@ObjID)
RETURN
END;
GO
SELECT P.name,D.ObjectDef FROM sys.procedures As P
CROSS APPLY dbo.FnGetDefinition(p.object_id) As D