获取ORA-06503的原因:PL/SQL:函数返回没有值?

Jam*_*213 1 c# sql plsql web-services

所以我正在开发一个Web服务,它将使用两个调用数据库的函数从数据库中获取数据.我们的目标是让它如果其中一个参数中有特定值,那么就说

            bool x= false;
        if ( "Y".Equals( parameterValve, StringComparison.InvariantCultureIgnoreCase ) )
            x= true;
                    if ( x)
                        cmd.Parameters.Add( "function_call1", OracleType.Cursor ).Direction = ParameterDirection.Output;  
                    else
                        cmd.Parameters.Add( "function_call2", OracleType.Cursor ).Direction = ParameterDirection.Output;                      
                        try
                        {
grab data here
}
return to webservice
Run Code Online (Sandbox Code Playgroud)

我已经完成了所有这些设置,它适用于第一个参数.但是,当我使用第二个参数调用调用webservice时,我收到此错误.

System.Data.OracleClient.OracleException: ORA-06503: PL/SQL: 
Function returned without value
ORA-06512: at "database.package", line 103
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)

我的问题是这个错误发生的原因究竟是什么?是因为我正在调用函数不正确或者函数调用本身是否有错误?

基本上我已经盯着这段代码了一段时间,现在试图弄清楚我做错了什么,所以我希望有人能够指出我正确的方向,我应该在哪里纠正这个错误.

非常感谢任何帮助或建议.

谢谢!

Jus*_*ave 7

功能本身有问题.

不知何故,Oracle正在结束该功能而不返回任何内容.例如,如果传入1个参数并且传入两个参数时抛出ORA-6503错误,则此函数将成功运行

CREATE OR REPLACE FUNCTION throw_error( p_arg1 IN NUMBER,
                                        p_arg2 IN NUMBER DEFAULT null )
  RETURN NUMBER
IS
BEGIN
  IF( p_arg2 IS NULL )
  THEN
    RETURN 1;
  END IF;
END;


SQL> select throw_error(1) from dual;

THROW_ERROR(1)
--------------
             1

SQL> select throw_error(1,2) from dual;
select throw_error(1,2) from dual
       *
ERROR at line 1:
ORA-06503: PL/SQL: Function returned without value
ORA-06512: at "HR.THROW_ERROR", line 10
ORA-06512: at line 1
Run Code Online (Sandbox Code Playgroud)