<p>I'm attempting to determine the row length in bytes of a table by executing the following stored procedure:</p>

<pre><code>CREATE TABLE #tmp 
(
  [ID] int, 
  Column_name varchar(640), 
  Type varchar(640), 
  Computed varchar(640), 
  Length int, 
  Prec int, 
  Scale int, 
  Nullable varchar(640), 
  TrimTrailingBlanks varchar(640), 
  FixedLenNullInSource varchar(640), 
  Collation varchar(256)
)
INSERT INTO #tmp exec sp_help MyTable
SELECT SUM(Length) FROM #tmp
DROP TABLE #tmp
</code></pre>

<p>The problem is that I don't know the table definition (data types, etc..) of the table returned by 'sp_help.'</p>

<p>I get the following error:</p>

<pre><code>Insert Error: Column name or number of supplied values does not match table definition.
</code></pre>

<p>Looking at the sp_help stored procedure does not give me any clues.</p>

<p>What is the proper CREATE TABLE statement to insert the results of a sp_help?</p>

I can't help you with creating a temp table to store sp_help information, but I can help you with calculating row lengths. Check out this
MSDN article
; it helps you calculate such based on the field lengths, type, etc. Probably wouldn't take too much to convert it into a SQL script you could reuse by querying against sysobjects, etc.
EDIT:
I'm redacting my offer to do a script for it. My way was nowhere near as easy as Vendoran's. :)
As an aside, I take back what I said earlier about not being able to help with the temp table. I can: You can't do it. sp_help outputs seven rowsets, so I don't think you'll be able to do something as initially described in the original question. I think you're stuck using a different method to come up with it.