文档首页/ 数据库和应用迁移 UGO/ 用户指南/ 语法转换指南/ 转换错误码/ MySQL To GaussDB 转换错误码/ U0400007:GaussDB的存储过程中不支持通过EXECUTE执行动态SELECT语句进行输出,如果动态语句是SELECT,则有风险
更新时间:2025-06-04 GMT+08:00

U0400007:GaussDB的存储过程中不支持通过EXECUTE执行动态SELECT语句进行输出,如果动态语句是SELECT,则有风险

描述

数据库类型与版本

  • 源库类型与版本:MySQL 5.5、5.6、5.7、8.0版本。
  • 目标库类型与版本:GaussDB所有版本。

语法示例

默认情况下,UGO转换EXECUTE语句,但是不转换动态SQL语句,遇到EXECUTE语句时将生成此错误提示,用户需要自行评估动态语句是否使SELECT输出语句。

如果GaussDB存储过程中通过EXECUTE执行的动态SQL语句类型是SELECT查询,则也可能存在和U0400006中提到的一样的风险。如下示例:

CREATE PROCEDURE execute_dynamic_demo()
AS
    DECLARE total INT;
BEGIN
    SELECT count(1) INTO total FROM emp_t WHERE deptno = 10;
    EXECUTE IMMEDIATE 'SELECT total;';
END;

改造建议

请参考U0400006