0

我创建了一个存储过程来返回包含大约 60 列的记录。但是,我想在我的项目的另一部分从它返回的 60 列中从同一个存储过程中选择大约 40 列。如何正确指定需要返回的列?本质上是什么规则,如果有的话

插入#TempTable (. . . . . . .) Exec StoredProcedure

?

4

2 回答 2

0

规则非常简单。SP 中的选择必须有与#Temptable 一样多的列,并且列,如果不是完全相同的类型,则必须兼容或可协调,例如int 进入VARCHAR。

如果您必须从 60 列中选择 40 列,则必须将其传递给 2 个临时表,或者使用涉及 OPENQUERY 之类的技巧将 SP 调用视为远程数据集。

于 2012-10-02T07:41:14.603 回答
0

您可以使用多个输出参数或一个输出参数,即 NVARCHAR(MAX)。你可以像这样初始化它:

'SELECT '+ Col01.Value + ','+ Col02.Value + ',' ...  + ',' +  Col40.Value

因此,您的存储过程将返回如下内容:

'SELECT 10,50,''2012-10-02'',''Joro'''

然后你可以这样做:

 DECLARE @OUTPUT NVARCHAR(MAX)='SELECT 10,50,''2012-10-02'',''Joro'''

 EXEC sp_executesql @OUTPUT

另外,请在此处查看此解决方案:

将存储过程的结果插入临时表

于 2012-10-02T11:02:14.477 回答