我有一个返回表的存储过程。但它可以根据下面的条件返回两种表格
...
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给了我“表格”。
答案 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