2011-07-26 39 views

回答

2

简短的回答:没有。

龙答:

嗯,这还没有。但我会试着解释为什么。从今天起,当您运行查询时,数据库引擎要求了解查询将返回的结果集结构(列数,列名称,数据类型等)。因此,当您从数据库请求数据时,必须定义结果集的结构。想想看:您是否曾经预先查询过您不知道结果集结构的查询?

这也适用于即使您做select *,这只是一个糖语法。最后,返回结构是“这样的表中的所有列”。

通过组装一个字符串,您可以在询问结果集之前动态生成所需的结构。这就是它工作的原因。

最后,你应该知道,动态组装字符串可以理论上和潜在(尽管不大可能)给你一个无限列的结果集。当然,这是不可能的,它会失败,但我相信你明白了其中的含义。

更新

我发现了这一点,这加强了为什么它不工作的原因。

Here

SSIS依靠知道数据流的提前元数据和 动态枢轴(这是你所追求的)是不是与 是兼容的。

我会继续寻找并在这里添加。

+0

我同意简短的回答,但我不确定长答案。 –

+0

@Conrad你会怎么做? –

+0

老实说,我不知道为什么SQL Server团队去了一个不允许动态列的语法,所以我不能说。我知道,如果'sometable'的结构发生变化,那么proc中的'select * from sometable'的输出或者查询的结果的确会改变,所以它不能成立,因为“数据库引擎必须知道结果集结构“。 –