我正在将存储过程从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 ;
有人可以帮忙吗
答案 0 :(得分:0)
在MySQL
中,DEALLOCATE
用于删除prepared statement
但不包括cursor
。
{DEALLOCATE | DROP} PREPARE stmt_name
在光标上,您可能正在尝试关闭它。
CLOSE cursor_name
此语句关闭先前打开的命名游标。除非明确关闭,否则将在例程的 END
处关闭。