C# Oracle动态参数错误

C# Oracle动态参数错误,c#,dapper,C#,Dapper,我得到了返回一个varchar2的函数 我正在使用dapper,执行此查询时遇到问题 OracleDynamicParameters DictionaryParams = new OracleDynamicParameters(); DictionaryParams.Add(name: "id", value: id,direction: ParameterDirection.Input); DictionaryParams.Add(name: "Return_Value",oracleDbT

我得到了返回一个
varchar2
的函数

我正在使用dapper,执行此查询时遇到问题

OracleDynamicParameters DictionaryParams = new OracleDynamicParameters();

DictionaryParams.Add(name: "id", value: id,direction: ParameterDirection.Input);
DictionaryParams.Add(name: "Return_Value",oracleDbType: OracleDbType.Varchar2,direction: ParameterDirection.ReturnValue);

con.Execute("function_name", DictionaryParams, commandType: CommandType.StoredProcedure);

 string a;

 a = DictionaryParams.Get<string>("Return_Value");
OracleDynamicParameters字典参数=新的OracleDynamicParameters();
Add(名称:“id”,值:id,方向:ParameterDirection.Input);
Add(名称:“Return_Value”,oracleDbType:oracleDbType.Varchar2,方向:ParameterDirection.ReturnValue);
con.Execute(“函数名”,字典参数,commandType:commandType.StoredProcess);
字符串a;
a=DictionaryParams.Get(“返回值”);
我发现了一个Oracle错误:

ORA-06502:PL/SQL:错误号或值:字符串缓冲区太小

我试着给返回值一个大小,但这不起作用,我也试着弄清楚,但一切都不起作用


有人能看看这个吗?

我想问题源于使用固定长度的字符串Char。

在PL-SQL代码的某个地方,您尝试将长度为N的Char或varchar2字符串放入长度为M的Char中,其中M>N

您需要指定varchar2的最大大小

例如:


parameters.Add(“p_输出”,dbType:OracleDbType.Varchar2,方向:ParameterDirection.OUTPUT,大小:1000)

您是否尝试过更新OracleDbType.Varchar2的值?错误是否在过程调用本身中?如果直接从sqlplus调用该过程,它是否有效?