Can I get a list of the columns and datatypes that are returned from a stored procedure without executing the procedure?
There's no way of doing this using the system tables directly. You could write a program that uses the sysobjects table to query out stored procedures and then get the associated text for the stored procedure from the syscomments table. You would then have to parse through the text and retrieve the column names. It could be done, but you would have to account for SELECT * and any other permutations of the SELECT statement.