我有一个像这样的SQL查询:
if table1 exist
if table1 has data
select * from table1
if table2 exist
if table2 has data
select * from table2
...
tableN
然后我在c#中迭代数据集 但是即使数据库中不存在表,数据集中也有一个空结果表,如何编写sql只返回非空查询?说我有10个表,3个数据库中不存在,那么,返回的数据集中只有7个结果表吗?
答案 0 :(得分:1)
我的意思是“在返回的数据集中有一个没有cols和row的空表”
啊......所以你希望丢失的表在DataSet
中有一个存根?看起来很漂亮......很奇怪 - 但我猜你可以这样做:
if object_id('table2') is not null -- yeuch yeuch yeuch (see below)
begin
select * from table2
end
else
begin
select 1 where 1 = 0
end
同样,我强调我发现这种欲望......不寻常;但是:
select
即使没有数据,我们只需要一张空表,这很好有更好的方法来检查对象是否存在 - 例如,检查信息模式表;但是我仍然不相信它(在一般情况下)明智的过分关注表的存在/不存在,除非你是:
答案 1 :(得分:0)
您可以轻松提取有关数据库中可用的每个表的详细信息:
use MyDBName
go
select * from sys.tables
go
使用游标(尽管我个人尽可能避免使用它们),你可以循环遍历并动态构建查询以仅使用可用的表,这意味着你不会返回任何NULL。
答案 2 :(得分:0)
如果不知道什么样的数据库 - 特别是涉及的实体和关系 - 你正在谈论的话,很难猜到...... 如前所述,你通常不会事先检查一张桌子是否存在 - 听起来像是一个坚持不拔的问题......