• 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