如何解决 PL/Sql 函数编译错误

Posted

技术标签:

【中文标题】如何解决 PL/Sql 函数编译错误【英文标题】:How to solve PL/Sql Function compilation error 【发布时间】:2021-03-19 05:37:41 【问题描述】:

我有两个表。一个来自服务器,另一个来自主机。我必须合并它们并按性别计算捐赠者总数。我尝试运行此功能。但它显示错误。我该如何解决?

**create or replace function count_donor_by_gender(g in Donor.gender%TYPE)
    return number
    is
    
    g_donor number:=0;
    
begin

    FOR R IN (select *  from Donor@site_link union Donor) LOOP
        if(R.gender=g) then
            g_donor:=g_donor+1;
        end if;
    END LOOP;
    
    return g_donor;

end count_donor_by_gender;
/**

【问题讨论】:

嗨。错误说明了什么? 缺少选择关键字和 sql 语句被忽略...我添加了一张图片 我有两个表。一个来自服务器,另一个来自主机。我必须合并它们并按性别计算总捐助者 【参考方案1】:

错误在这里

select *  from Donor@site_link union Donor

union 语句将 2 个 SELECT 语句的结果合并为一个,所以你需要

select *  from Donor@site_link union select * from Donor

请注意,“UNION”会导致数据库删除可能会降低性能的重复项。如果不打算删除重复项,请改用“UNION ALL”

【讨论】:

以上是关于如何解决 PL/Sql 函数编译错误的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL:使用编译错误创建的函数 [关闭]

在 Oracle 11g2 XE 中编译 PL/SQL 函数有时会导致 ORA-00600:内部错误

如何摆脱 PL/SQL 程序中的编译错误?

PL/SQL 过程编译错误

编译时PL / Sql问题

声明变量的 PL/SQL 编译错误