我有许多与此类似的存储过程:
DECLARE @sql NVARCHAR(MAX)
DECLARE @mdx NVARCHAR(MAX)
CREATE table #result
(
[col1] NVARCHAR(50),
[col2] INT,
[col3] INT
)
SET @mdx = '{some dynamic MDX}'
SET @sql = 'SELECT a.* FROM OpenQuery(LinkedAnalysisServer, ''' + @mdx + ''') AS a'
INSERT INTO #result
EXEC sp_executesql @sql
SELECT * FROM #result
当结果存在于多维数据集中时,这非常有效。但是,当 OpenQuery 结果为空时,INSERT 失败并出现以下错误:
列名或提供的值的数量与表定义不匹配。
我的问题是,处理这种情况的最佳方法是什么?我在静态报告文件 (.rdlc) 中使用结果,因此需要显式键入临时表(我很确定)。