我正在使用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
答案 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;
}
}
预览数据表,您将获得所有属性。