如何在SQL Server中获取存储过程的返回表结构

时间:2015-04-16 05:14:30

标签: sql sql-server-2008 stored-procedures schema

我正在使用SQL Server将存储过程数据存储到 temp 表中。 存在数据类型不匹配错误。存储过程太长而且复杂,我无法弄清楚每个字段的类型。

有没有办法找出SP返回表的结构?

下面的代码我试图找出架构。

SELECT
p.name ,
OBJECT_NAME(OBject_ID) 'ProductionLog', 
p.parameter_id ,
p.user_type_id ,
t.name 'TypeName',
p.max_length ,
p.precision ,
p.scale ,
p.is_output 
FROM
sys.parameters p
INNER JOIN 
sys.types t ON p.system_type_id = t.system_type_id

1 个答案:

答案 0 :(得分:1)

以下是我在C#应用程序中所做的工作。

public static DataTable SchemaReader(string tableName)
    {
        string sql = "<SP_NAME>";//replace this with your store procedure name   
        using (SqlConnection conn = new SqlConnection("packet size=4096;user id=<DB_NAME>;pwd=<PASSWORD>;data source=<DB_SOURCE>\\;persist security info=False;initial catalog=<DB_NAME>"))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.Add("@PARAM1", SqlDbType.DateTime).Value =  "2015-04-13";
            cmd.Parameters.Add("@PARAM2", SqlDbType.DateTime).Value = "2015-04-15";
            cmd.Parameters.Add("@PARAM3", SqlDbType.VarChar).Value = "12:00 PM";                                                               
            SqlDataReader reader = cmd.ExecuteReader();
            DataTable schema = reader.GetSchemaTable();                
            reader.Close();
            conn.Close();
            return schema;
        }

    }

预览数据表,您将获得所有属性。