-3

我有一个包含 100 多个表的 SQL Server 数据库。许多(但不是全部)都有一个名为的列ins_date,用于保存每条记录插入数据库的日期。

我想获得数据库中每个表的最后(最大)插入日期。我做了一些修补sp_MSforeachtable,似乎足以遍历所有表。

我面临的问题:当我的查询遇到没有该ins_date列的表时,它们将返回错误。我可以使用什么以及sp_MSforeachtable仅从具有 的表中获取信息ins_date,而忽略其他表或将其返回为 NULL?

4

2 回答 2

0

你可以试试这个代码来检查一个表的空情况

 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)
                                    {
于 2018-04-16T09:01:54.393 回答
0

您可能希望@command1使用 if 语句包装查询。像这样的东西:

if exists(select 1 from INFORMATION_SCHEMA.columns where COLUMN_NAME = 'ins_date' and TABLE_NAME='?')
于 2018-04-16T09:05:45.817 回答