获取表名由应用程序中的sql查询返回

时间:2012-03-14 11:32:41

标签: .net sql sql-server

我有一个返回表的存储过程。但它可以根据下面的条件返回两种表格

...

if @TestCondition > 0 
        begin 
            select  *
            from    Test1 NoExpiredTable
        end
    else 
        begin 
            select  *
            from    Test2 ExpiredTable
        end

所以在应用程序中如何获取表名?我试过的是

 if (ds.Tables[0].TableName == "NoExpiredTable")
 {

 }

但是ds.Tables [0] .TableName给了我“表格”。

2 个答案:

答案 0 :(得分:3)

SQL查询不返回表。他们返回结果集。结果集没有名称。

答案 1 :(得分:3)

结果集没有来自它的表的概念,您可以在过程返回的记录中包含表名。 。

if @TestCondition > 0 
    begin 
        select  *, 'NoExpiredTable' TableName
        from    Test1 NoExpiredTable
    end
else 
    begin 
        select  *, 'ExpiredTable' TableName
        from    Test2 ExpiredTable
    end

然后您可以像访问任何其他列一样访问它。

如果没有返回任何行,这对您没有任何作用,您将无法知道从哪个表中选择。

在这里,您可以返回包含条件结果的单个记录(即具有单个列的单行,TableName),然后返回实际表中的记录。 e.g。

选择

时的情况
if @TestCondition > 0 
    begin 
        select 'NoExpiredTable' TableName

        select  *
        from    Test1 NoExpiredTable
    end
else 
    begin 
        select 'ExpiredTable' TableName

        select  *
        from    Test2 ExpiredTable
    end