Oracle函数编译错误,没有错误

Nic*_*net 1 oracle plsql

我正在创建一个以sys身份登录的函数.

CREATE FUNCTION Core.Get_Contact_Code
(
       First_Name IN NVARCHAR2,
       Middle_Name IN  NVARCHAR2,
       Last_Name IN NVARCHAR2
) 
RETURN NVARCHAR2 
IS 
    Ret_Val NVARCHAR2(10);
    C_Code NVARCHAR2(10);

    CURSOR contact_cursor IS 
    SELECT Contact_Code FROM (
        SELECT Contact_Code
        FROM Core.Contacts
        WHERE
        Contact_Code LIKE UPPER(left(First_Name,2) ||
        CASE    
            WHEN Middle_Name IS NULL THEN left(Last_Name,3) 
            ELSE left(Middle_Name,1) || left(Last_Name,2) 
        END || '%')
        ORDER BY Contact_Code desc)
   WHERE ROWNUM=1;
BEGIN
    open contact_cursor;
    fetch contact_cursor into C_Code;
    close contact_cursor;

    IF C_Code IS NULL THEN
    Ret_Val := 
    UPPER(left(First_Name,2)||
        CASE    
            WHEN Middle_Name IS NULL THEN left(Last_Name,3) 
            ELSE left(Middle_Name,1) || left(Last_Name,2) 
        END
    )
       || '-' || '0001'; 
    ELSE
        Ret_Val := 
        UPPER(left(First_Name,2)||
            CASE    
                WHEN Middle_Name IS NULL THEN left(Last_Name,3) 
                ELSE left(Middle_Name,1) || left(Last_Name,2) 
            END
        )
           || '-' ||
              trim(to_char(CAST(right(C_Code,4) AS integer)+1,'0000')); 
    END IF;

    RETURN Ret_Val;
END;
/

show errors;
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,它说:

Warning: compiled but with compilation errors
No errors.
Run Code Online (Sandbox Code Playgroud)

但是当我在定义中省略模式Core时

CREATE FUNCTION Get_Contact_Code
Run Code Online (Sandbox Code Playgroud)

它汇编.

有什么想法为什么Oracle会这样做?

Jon*_*ler 6

什么是左和右?您的脚本是否不包含这些函数的模式名称,因此它们只安装在SYS中而不安装在CORE中?