gpt4 book ai didi

c# - ORA-06502 : PL/SQL: numeric or value error calling a stored procedure from c# web service

转载 作者:行者123 更新时间:2023-12-03 23:30:35 24 4
gpt4 key购买 nike

我正在尝试编写调用 oracle 存储过程的 Web 服务。该过程有 2 个输入 - 一个字符串(公司代码)和一个整数(客户代码)。它有2个输出参数;一个数字 (pout_addr_code) 和一个 varchar2 (pout_descr)。当我从 SQL Developer 运行此过程时,一切正常,并且两个值都按预期返回。当我从我的 C# Web 服务调用过程时,我在执行时收到错误“Oracle.DataAccess.Client.OracleException: ORA-06502: PL/SQL: numeric or value error”,而不是在编译期间。

如果我注释掉 cmd.ExecuteNonQuery()return pout_addr_code.Value... 行,它将正常运行并输出我的测试字符串。

如果我从过程中删除 varchar2 输出并注释掉添加 pout_descr 参数的部分并注释掉return "I returned..." 它运行正常,包括从存储过程。

所以在我看来,问题在于当过程具有 OracleDbType.Varchar2 行时执行 NonQuery。使用 Oracle.DataAccess 引用在 C# 中添加输出参数时,是否有其他定义方法?我找到了 this post询问类似的错误,但他的解决方案是“在 C# 中将 VARCHAR2 的最大值指定为 32767”,但我不明白你是怎么做到的。

这是我的 C# 代码:

public string AutoPmtPost(string company_code, int customer_code)
{
string oradb = "Data Source=MySource; User Id=MyID; Password=MyPassword;";
OracleConnection conn = new OracleConnection(oradb);
conn.Open();
OracleCommand cmd = new OracleCommand("USP_JEFF_TEST", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add("pin_company_code", OracleDbType.Varchar2, ParameterDirection.Input).Value = company_code;

cmd.Parameters.Add("pin_customer_code", OracleDbType.Int32, ParameterDirection.Input).Value = customer_code;

OracleParameter pout_addr_code = new OracleParameter("pout_addr_code", OracleDbType.Int32);
pout_addr_code.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pout_addr_code);

OracleParameter pout_descr = new OracleParameter("pout_descr", OracleDbType.Varchar2);
pout_descr.Direction = ParameterDirection.Output;
cmd.Parameters.Add(pout_descr);

cmd.ExecuteNonQuery();
//return pout_addr_code.Value.ToString();
return "I returned something";
}

谢谢。

最佳答案

OracleParameter pout_descr = new OracleParameter("pout_descr", OracleDbType.Varchar2);

应该是

OracleParameter pout_descr = new OracleParameter("pout_descr", OracleDbType.Varchar2, 2000);

关于c# - ORA-06502 : PL/SQL: numeric or value error calling a stored procedure from c# web service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069438/

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