SQL游标查询被挂起

当我尝试以这种方式执行查询时,它将挂起SQL服务器(通话10到15分钟),但是如果我直接使用select查询来获取而没有光标,它将在几秒钟内显示。

我的光标语法是否有其他问题?

DeclARE @V_DATA XML;
        SET @V_DATA=CONVERT(XML,'<DocumentElement>
  <DATA>
    <DEPARTMENT>Department</DEPARTMENT>
    <DisplayName>Display Name</DisplayName>
    <EMAIL_ID>Email Address</EMAIL_ID>
    <FIRST_NAME>First Name</FIRST_NAME>enter code here
    <LAST_NAME>Last Name</LAST_NAME>
    <USER_ID>Mailbox Alias</USER_ID>
    <PHONE_NO>Mobile Phone Number</PHONE_NO>
    <actIVE>actIVE</actIVE>
    <BLOCKED>BLOCKED</BLOCKED>
  </DATA>
</DocumentElement>');
        DeclARE @CURR_DATE DATETIME=NULL;
        DeclARE @USER_ID VARCHAR=NULL;
        DeclARE @FIRST_NAME VARCHAR=NULL;
        DeclARE @LAST_NAME VARCHAR=NULL;
        DeclARE @DEPARTMENT VARCHAR=NULL;
        DeclARE @PHONE_NO VARCHAR=NULL;
        DeclARE @EMAIL_ID VARCHAR=NULL;
        DeclARE @actIVE VARCHAR=NULL;
        DeclARE @BLOCKED VARCHAR=NULL;
        DeclARE @V_CNT INT=0;

        DeclARE @getGM CURSOR ;
        SET @getGM = CURSOR FOR
            SELECT 
            CURR_DATE = GETDATE(),USERID = Y.i.value('(USER_ID)[1]','VARCHAR(10)'),FIRST_NAME = Y.i.value('(FIRST_NAME)[1]','VARCHAR(50)'),LAST_NAME = Y.i.value('(LAST_NAME)[1]',DEPARTMENT = Y.i.value('(DEPARTMENT)[1]',PHONE_NO = Y.i.value('(PHONE_NO)[1]','VARCHAR(20)'),EMAIL_ID = Y.i.value('(EMAIL_ID)[1]','VARCHAR(100)'),actIVE = Y.i.value('(actIVE)[1]','VARCHAR(1)'),BLOCKED = Y.i.value('(BLOCKED)[1]','VARCHAR(1)')
            FROM  @V_DATA.nodes('DocumentElement/DATA') AS Y(i);
        OPEN @getGM
            FETCH NEXT FROM @getGM INTO @CURR_DATE,@USER_ID,@FIRST_NAME,@LAST_NAME,@DEPARTMENT,@PHONE_NO,@EMAIL_ID,@actIVE,@BLOCKED;
            WHILE @@FETCH_STATUS = 0
            BEGIN
                SET @V_CNT=(SELECT COUNT(*) FROM ADMS_USER_DetaIL
                            WHERE USERID=@USER_ID);
            END;
        CLOSE @getGM
        DEALLOCATE @getGM
mmmnnnwo 回答:SQL游标查询被挂起

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2886003.html

大家都在问