我创建了一个存储过程来返回包含大约 60 列的记录。但是,我想在我的项目的另一部分从它返回的 60 列中从同一个存储过程中选择大约 40 列。如何正确指定需要返回的列?本质上是什么规则,如果有的话
插入#TempTable (. . . . . . .) Exec StoredProcedure
?
规则非常简单。SP 中的选择必须有与#Temptable 一样多的列,并且列,如果不是完全相同的类型,则必须兼容或可协调,例如int 进入VARCHAR。
如果您必须从 60 列中选择 40 列,则必须将其传递给 2 个临时表,或者使用涉及 OPENQUERY 之类的技巧将 SP 调用视为远程数据集。
您可以使用多个输出参数或一个输出参数,即 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
另外,请在此处查看此解决方案: