gpt4 book ai didi

c# - Oracle 数据访问 ORA-06512 : character string buffer too small

转载 作者:太空狗 更新时间:2023-10-30 01:03:58 24 4
gpt4 key购买 nike

当我调用 GetTest 时出现此错误:

string buffer too small 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;
}
}

甲骨文程序:

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;

最佳答案

这显然不是你想要的,但好像ODP.NET在.NET端使用参数的长度作为out参数的长度...

这将解决您的问题:

cmd.Parameters.Add("P_OUT_MESSAGE", OracleDbType.Varchar2, 32767, "x".PadRight(500, 'x'), ParameterDirection.Output);

但这更好,虽然不完全正确,但它有效:

cmd.Parameters.Add("P_OUT_MESSAGE", OracleDbType.Clob, ParameterDirection.Output);

或者,如果可能的话,最好避免使用 out 参数并使用标量返回值或表函数。

关于c# - Oracle 数据访问 ORA-06512 : character string buffer too small,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25413892/

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