文档首页/ 数据库和应用迁移 UGO/ 用户指南/ 语法转换指南/ 转换错误码/ MySQL To GaussDB 转换错误码/ U0400006:GaussDB的存储过程中不支持使用SELECT语句进行输出
更新时间:2025-06-04 GMT+08:00

U0400006:GaussDB的存储过程中不支持使用SELECT语句进行输出

描述

数据库类型与版本

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

语法示例

默认情况下,UGO保留存储过程中SELECT输出语句不转换,并生成此错误提示。

GaussDB的存储过程中无法直接使用SELECT查询语句进行输出,如下示例在GaussDB中不支持。

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

改造建议

方案一:修改“存储过程内输出类型select语句转换”转换配置项,将存储过程中输出的查询语句注释掉。请注意,MySQL存储过程中的SELECT语句返回的结果集可被调用客户端获取,如果选择注释掉该语句,可能会影响调用该存储过程的应用。

方案二:您也可以参考如下示例,将原有返回结果集的SELECT语句改造成存储过程OUT参数的方式,以此来获取预期的输出,请注意这种方式需要修改客户端的调用方式。

CREATE PROCEDURE demo(total OUT INT)
AS
BEGIN
    SELECT count(1) INTO total FROM emp_t WHERE deptno = 10;
END;

方案三:如果原有的存储过程确实有返回数据的需求,也可以将存储过程改造成存储函数,甚至直接通过改造业务实现原有的逻辑。