我知道有很多这些东西,我基本上都经历了所有这些,而且我似乎无法找到我的问题的答案。Oracle ORA-06502 PL/SQL:数字或值错误:字符到数字转换错误
我有一个功能的软件包如下:
在C#
我执行它像
using (var cmd = new OracleCommand("SCHEMA.MYPACKAGE.AFunction", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("AString1", "Param1");
cmd.Parameters.Add("ANumber", 123);
cmd.Parameters.Add("AString2", "Param2");
cmd.Parameters.Add("ReturnValue", OracleDbType.Varchar2).Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
}
其他信息:ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误 ORA-06512:在第1行
在调试中,我可以看到Param1
,Param2
和ReturnValue
是varchar2
和ANumber
是Int32。即使我将ANumber更改为Int64,它仍然不起作用,并且我不确定为什么会出现此错误,因为一切都很正常。如果我犯了一个愚蠢的错误,任何人都可以指出我吗?
如果我在蟾蜍中执行它,它的工作没有问题。
DECLARE
RetVal VARCHAR2(200);
PARAM1 VARCHAR2(4000);
PARAM2 VARCHAR2(100);
ANUMBER NUMBER;
BEGIN
PARAM1 := 'AParam1';
ANUMBER := 123;
PARAM2 := 'AParam2';
RetVal := SCHEMA.MYPACKAGE.AFunction (PARAM1, ANUMBER, PARAM2);
COMMIT;
END;
我的话。这实在太好了。现在有不同的错误,但这是因为varchar2的大小我确定 – Jaques
需要在ReturnValue上指定大小。谢谢你的帮助。 – Jaques
是的,输出/返回参数必须具有适当的大小以支持所有返回的值。 – Husqvik