2011-01-05 70 views
1

我想在.NET中构建一个设计器,并希望能够从存储过程中检索输出的列和列类型而不调用它,以便设计器可用于映射输出。这可能吗?我甚至愿意在必要时使用非托管API。有没有办法找出存储过程返回而没有运行它?

+0

不要这样想。请参阅相关的[Microsoft Connect项目](https://connect.microsoft.com/SQLServer/feedback/details/525653/stored-procedures-should-expose-detailed-contracts)。编辑:虽然实际上Visual Studio强类型数据集设计器在一定程度上执行此操作... – 2011-01-05 15:05:03

回答

3

我相信你要找的是SET FMTONLYDocumentation)。

这使您可以执行一个SP(或select语句)并查看将在没有实际执行查询的情况下返回哪些列。

+0

通过SQL事件探查器,我看到ODBC,OLE-DB和/或其他低级API使用此技巧。 Upvoted,但我不知道使用它会多么容易。 – 2011-01-05 15:09:26

+0

谢谢。我认为这会起作用。它似乎返回所有可能的返回值,即使它们有条件地返回。 – 2011-01-05 15:21:55

1

这通常是不可能的,因为即使是单个存储过程也可以返回不同的结果集,具有不同的列或列数据类型。

0

在极端情况下,即使返回的结果集的数量可能取决于参数,并且存储过程使用动态sql时,它绝对不可能。

相关问题