如何使用光标获取不同的值?

时间:2018-05-14 11:33:48

标签: sql sql-server cursor

我试图从表中获取值(日期),每行都是唯一标识的,我使用游标来获取值。以下是BM_RLOS_DisbursementCallsGrid表格的代码,其中bpm_refno为主键,disbursal_Date为日期。

一个bpm_refno可以多次出现不同的日期,我将不得不获取具有最大日期的bpm_refno,但是当我只运行Select语句时,它会按预期给出每行的结果不同的bpm_refno和最大日期但是当我运行游标并打印该值时,处理结果需要花费太长时间,结果也是复制,我想要不同的行。

注意:我是游标中的新手。

此外,如果有人可以建议如何为每个唯一ID添加光标值,那将是一个很大的帮助。

CREATE PROCEDURE test1
AS
    DECLARE @wi_name NVARCHAR(50);
    DECLARE @date DATETIME;

    DECLARE fetch_disb_date CURSOR FOR
    'SELECT DISTINCT '''+ bpm_referenceno, max(callexecutiondate)
    FROM BM_RLOS_DisbursementCallsGrid
    WHERE calldescription='MG Contract Creation' 
      AND callstatus='SUCCESS'
    GROUP by bpm_referenceno

    BEGIN
        OPEN fetch_disb_date;
        FETCH next FROM  fetch_disb_date
        INTO @wi_name,@date;
        WHILE (@@FETCH_STATUS=0)
        BEGIN
            PRINT @wi_name;
            PRINT @date;
        END;
        CLOSE fetch_disb_date;
        DEALLOCATE fetch_disb_date;
    END

0 个答案:

没有答案