我有一个包含 100 多个表的 SQL Server 数据库。许多(但不是全部)都有一个名为的列ins_date
,用于保存每条记录插入数据库的日期。
我想获得数据库中每个表的最后(最大)插入日期。我做了一些修补sp_MSforeachtable
,似乎足以遍历所有表。
我面临的问题:当我的查询遇到没有该ins_date
列的表时,它们将返回错误。我可以使用什么以及sp_MSforeachtable
仅从具有 的表中获取信息ins_date
,而忽略其他表或将其返回为 NULL?
我有一个包含 100 多个表的 SQL Server 数据库。许多(但不是全部)都有一个名为的列ins_date
,用于保存每条记录插入数据库的日期。
我想获得数据库中每个表的最后(最大)插入日期。我做了一些修补sp_MSforeachtable
,似乎足以遍历所有表。
我面临的问题:当我的查询遇到没有该ins_date
列的表时,它们将返回错误。我可以使用什么以及sp_MSforeachtable
仅从具有 的表中获取信息ins_date
,而忽略其他表或将其返回为 NULL?
你可以试试这个代码来检查一个表的空情况
string kyt = "SELECT * from sp_MSforeachtable where yourcondition=@yourcondition";
SqlCommand comm = new SqlCommand(kyt, con);
con.Open();
comm.Parameters.AddWithValue(@yourcondition,"valueofyourcondition");
SqlDataAdapter da = new SqlDataAdapter(comm);
SqlDataReader dr = comm.ExecuteReader();
if (dr.Read())
{
dr["ins_date"].ToString();
if (dr["ins_date"] != DBNull.Value)
{
您可能希望@command1
使用 if 语句包装查询。像这样的东西:
if exists(select 1 from INFORMATION_SCHEMA.columns where COLUMN_NAME = 'ins_date' and TABLE_NAME='?')