Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态SQL存储过程第二结果集_Sql_Stored Procedures_Dynamic_Reporting Services_Nested - Fatal编程技术网

动态SQL存储过程第二结果集

动态SQL存储过程第二结果集,sql,stored-procedures,dynamic,reporting-services,nested,Sql,Stored Procedures,Dynamic,Reporting Services,Nested,我正在处理通过SSRS显示两个表中选定测试结果的请求。我开发了动态SQL来实现这一点,但在运行存储过程时遇到了问题,因为我只收到第一个结果集 此存储过程首先查询用于为第二个查询生成列的标记名表。。。它检索实际需要的数据。SP返回列名,但不返回所需的第二个结果集 我意识到这是一个丑陋的解决方案,但我们的IT团队对原始数据库设计没有任何投入,所以现在我们正试图尽我们所能提供帮助 代码: 打印@query1并发布结果,这可能会有所帮助。如果我使用Print@query1运行此操作,我仍然只能从要执行的

我正在处理通过SSRS显示两个表中选定测试结果的请求。我开发了动态SQL来实现这一点,但在运行存储过程时遇到了问题,因为我只收到第一个结果集

此存储过程首先查询用于为第二个查询生成列的标记名表。。。它检索实际需要的数据。SP返回列名,但不返回所需的第二个结果集

我意识到这是一个丑陋的解决方案,但我们的IT团队对原始数据库设计没有任何投入,所以现在我们正试图尽我们所能提供帮助

代码:


打印
@query1
并发布结果,这可能会有所帮助。如果我使用Print@query1运行此操作,我仍然只能从要执行的第一个查询(@QUERY2)中获得一个结果集。我到底做错了什么。。我想是有点傻吧!谢谢…根据,如果
的目的是使用其他语句中的返回值,那么
您不能通过为未定义为模块中输出参数的参数指定输出来执行模块。
我认为这表明您的@query2在执行之前应该将@Cols定义为输出参数。看看这是否有帮助。还要看看解释的sp_executesql是否有帮助。谢谢。我确实尝试将@cols定义为输出,但收到的错误是“数据类型是不推荐使用的大型对象或LOB,但标记为输出参数”。不支持将不推荐使用的类型作为输出参数。请改用当前的大型对象类型。“”。NVARCHAR(最大值)列为有效的LOB。。。所以我不知道下一步该去哪里?再次感谢!
DECLARE @cols as NVARCHAR(MAX), @query1 as NVARCHAR(MAX), @query2 as NVARCHAR(MAX),
@FLOATTABLE NVARCHAR(MAX), @TAGTABLE NVARCHAR(MAX),@startdate as NVARCHAR(MAX), 
@ENDDATE AS NVARCHAR(MAX), @results as NVARCHAR(MAX)

set @FLOATTABLE = 'dbo.TRW_TESTER_FLOATTABLE' --for testing purposes only
set @tagtable = 'dbo.TRW_TESTER_TAGTABLE' --for testing purposes only

Set @startdate='2013-12-05' -- for testing purposes only
Set @enddate='2013-12-31' -- for tesying purposes only

set @query2 = 'SELECT STUFF((SELECT  DISTINCT   '','' +
QUOTENAME(CONVERT(VARCHAR,TagName),' 
+ '''"'') FROM ' + @TAGTABLE + ' FOR XML PATH ('''')),1,1,'''')'

EXECUTE sp_executeSQL @query2, @Cols OUTPUT


Set @query1 = 'SELECT  DISTINCT DateAndTime, Millitm,  ' + @cols + ' FROM ( select
T.DateAndTime, T.Millitm, N.TagName, T.Val from ' + @FLOATTABLE + ' T  LEFT JOIN ' + 
@TAGTABLE + ' N ON T.TagIndex=N.TagIndex WHERE T.DateAndTime Between '''+ @startdate +
''' AND '''+ @enddate +''')  x PIVOT (MAX(Val) for TagName IN (' + @cols + ')) p'

EXECUTE sp_executeSQL @query1, @results OUTPUT