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