MYSQL游标在存储过程中出现问题

时间:2014-04-28 08:00:39

标签: mysql cursor

我正在将存储过程从MSSQL转换为MYSQL,并且在某个时刻陷入困境。我在DEALLOCATE上收到一个错误.Host_Cursor错误是UNEXPECTED IDENT_QUOTED期待PREPARE_SYM。如果我删除行DEALLOCATE CURSOR我在END WHILE上收到错误说意外的WHILE期待IF。我知道这是一个微不足道的错误,但我似乎没有得到它是代码:

FETCH NEXT FROM Duration_Cursor INTO m_Duration   ; 

 IF  (@@FETCH_STATUS = 0  )       
  THEN          

 WHILE (@InnerFlag=1)          
   DO          
     SET m_MIN = m_Duration / 30;          
     SET m_SEC = m_Duration % 30;          

    IF (m_MIN=0 )       
      THEN        
       SET m_MIN=1;       
       SET m_SEC=0;       


   ELSE if (m_SEC >= 15)           
     THEN          
      set m_MIN=m_MIN+1 ;         
      SET m_SEC=0 ;                 

   ELSE if (m_SEC < 15 AND m_SEC > 0) 
    THEN         
      SET m_SEC=50 ;-- 45                     

   END IF;        



     SET m_CommuSum_MIN_US = m_CommuSum_MIN_US + cast( CONCAT(CAST( m_MIN as  char(5)),'.', CAST( m_SEC as char(5))) as decimal);          


    FETCH NEXT FROM Duration_Cursor INTO m_Duration ;         


   IF (@@FETCH_STATUS <> 0)          
              THEN          

    SET InnerFlag = 0 ;    
            DEALLOCATE Duration_Cursor;         
      END IF;

      END WHILE;


  END IF ;

有人可以帮忙吗

1 个答案:

答案 0 :(得分:0)

MySQL中,DEALLOCATE用于删除prepared statement但不包括cursor

DEALLOCATE PREPARE Syntax

{DEALLOCATE | DROP} PREPARE stmt_name

在光标上,您可能正在尝试关闭它。

Cursor CLOSE Syntax

CLOSE cursor_name

此语句关闭先前打开的命名游标。除非明确关闭,否则将在例程的 END 处关闭。