Sql 带游标的SSRS订阅
在我的ssrs数据驱动订阅中,我尝试使用游标。 我需要的结果是:字母数应该等于光标返回的行数。例如:Sql 带游标的SSRS订阅,sql,sql-server,cursor,ssrs-2008-r2,subscription,Sql,Sql Server,Cursor,Ssrs 2008 R2,Subscription,在我的ssrs数据驱动订阅中,我尝试使用游标。 我需要的结果是:字母数应该等于光标返回的行数。例如: SET ANSI_WARNINGS ON DECLARE cur CURSOR FOR SELECT * FROM #ForResult OPEN cur WHILE 1 = 1 BEGIN FETCH NEXT FROM cur INTO @ID, @CommittedBy, @FlightNumber, @Dep, @DateBeg, @Carrier,
SET ANSI_WARNINGS ON
DECLARE cur CURSOR FOR
SELECT * FROM #ForResult
OPEN cur
WHILE 1 = 1
BEGIN
FETCH NEXT FROM cur INTO @ID, @CommittedBy, @FlightNumber, @Dep, @DateBeg, @Carrier, @Arr
IF @@FETCH_STATUS <> 0 BREAK
SELECT CONVERT(VARCHAR(10), @DateBeg, 104) AS [DateBeg]
, CONVERT(VARCHAR(10), @DateBeg, 104) AS [DateEnd]
, @Dep AS [AP]
, @FlightNumber AS [FlightNumber]
, 'email@y.ru' AS [Recip]
, 'Отчет '
+ @FlightNumber
+ ' от ' + CONVERT(VARCHAR(10), @DateBeg)
+ ' а/к ' + @Carrier
+ ' ' + @Dep + ' - ' + @Arr
+ ' // ' + @CommittedBy AS [Subject]
END
CLOSE cur
DEALLOCATE cur
SET ANSI_WARNINGS OFF
SET ANSI_WARNINGS已解决问题无法读取数据集的下一个数据行
但订阅只返回第一个游标结果。如何以不同的字母返回所有行?这是您仅有的代码,因为在SSRS中,代码的工作方式与TSQL非常不同。它应该区分大小写,字符串参数可能会有不同的工作方式。确保在SP中正确定义了所有ANSI设置,并再次运行这些设置,而不是在光标中选择数据,将其插入表变量,然后将结果累加 然后,在光标完成插入后,从表变量中选择所有内容 目前,它将把第一次选择的结果返回给SSRS,然后基本上放弃该程序 或者,您可以不直接从ForResult执行选择吗?例如:
SELECT
CONVERT(VARCHAR(10), DateBeg, 104) AS [DateBeg]
, CONVERT(VARCHAR(10), DateBeg, 104) AS [DateEnd]
, Dep AS [AP]
, FlightNumber AS [FlightNumber]
, 'emaily.ru' AS [Recip]
, 'Отчет '
+ FlightNumber
+ ' от ' + CONVERT(VARCHAR(10), DateBeg)
+ ' а/к ' + Carrier
+ ' ' + Dep + ' - ' + Arr
+ ' // ' + CommittedBy AS [Subject]
FROM #ForResult
设置ANSI_警告-解决了问题,但我只收到一个字母