当我调用GetTest
时,我得到这个错误:
字符串缓冲区太小ORA-06512
我的C#方法:
public string GetTEST()
{
using (var conn = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Dbconnection"].ConnectionString))
{
OracleCommand cmd = new OracleCommand("Package.GetTEST");
cmd.BindByName = true;
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("P_OUT_MESSAGE", OracleDbType.Varchar2,1000,ParameterDirection.Output);
cmd.ExecuteNonQuery();
var t = cmd.Parameters["P_OUT_MESSAGE"].Value;
}
}
字符串
Oracle程序:
PROCEDURE GetTEST
(
P_OUT_MESSAGE OUT VARCHAR2
)
IS
BEGIN
p_out_message := 'Un problème a été signalé pour votre propriété. Veuillez communiquer avec le Service de l''évaluation au 418 111-7878 ou à l''adresse test@tesst.com';
END;
型
2条答案
按热度按时间zengzsys1#
这显然不是你想要的,但似乎ODP.NET在.NET端使用参数的长度作为out参数的长度...
这将解决您的问题:
字符串
但这是更好的,虽然不完全正确,它的工作:
型
或者,如果可能的话,避免使用
out
参数,而使用标量返回值或表函数。j7dteeu82#
必须使用5个参数作为过程的OUT参数。所以我在这里添加了null:
字符串
对于4,它将1000视为对象值而不是大小。