【问题标题】:SSRS subscription with cursor带光标的 SSRS 订阅
【发布时间】:2019-10-16 10:28:45
【问题描述】:

在我的(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, @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 解决问题Cannot read the next data row for the dataset

但是订阅只返回第一个游标结果。如何以不同的字母返回所有行?

【问题讨论】:

    标签: sql sql-server cursor ssrs-2008-r2 subscription


    【解决方案1】:

    这是您仅有的代码吗,因为在 SSRS 中,代码的工作方式与 TSQL 非常不同。它应该区分大小写,字符串参数的工作方式可能不同。确保您在 SP 中正确定义了所有 ANSI 设置并再次运行它们

    【讨论】:

    • SET ANSI_WARNINGS ON - 解决了问题,但我只收到一个字母(第一个)
    【解决方案2】:

    与其选择光标中的数据,不如将其插入到表变量中,然后将结果累加

    然后在游标完成插入后从表变量中选择所有内容。

    目前它将第一个 SELECT 的结果返回给 SSRS,然后基本上放弃该过程。

    或者,您不能直接从#ForResult 执行该SELECT 吗? IE。比如:

    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
    

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      相关资源
      最近更新 更多