gpt4 book ai didi

c# - 获取 ORA-06503 : PL/SQL: Function returned without value? 的原因

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:04 27 4
gpt4 key购买 nike

所以我正在开发一个 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

我已经完成了所有这些设置,并且它对第一个参数工作正常。但是,当我使用第二个参数调用调用 web 服务时,出现此错误。

System.Data.OracleClient.OracleException: ORA-06503: PL/SQL: 
Function returned without value
ORA-06512: at "database.package", line 103
ORA-06512: at line 1

我的问题是这个错误发生的确切原因是什么? 是因为我错误地调用了函数还是函数调用本身有问题?

从本质上讲,我已经盯着这段代码看了一段时间,现在试图弄清楚我做错了什么,所以我希望有人能给我指出我应该寻找的正确方向更正此错误。

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

谢谢!

最佳答案

函数本身有问题。

不知何故,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

关于c# - 获取 ORA-06503 : PL/SQL: Function returned without value? 的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7003555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com