我得到的函数返回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");
我收到了Oracle错误:
ORA-06502:PL / SQL:错误号或值:字符串缓冲区太小
我试图给出一个返回值的大小,但这不起作用,我也试图弄明白,但一切都没有用。
有人可以看一下吗?
答案 0 :(得分:2)
您需要指定varchar2的最大大小。
示例:
parameters.Add(&#34; P_OUTPUT&#34;,dbType:OracleDbType.Varchar2,direction:ParameterDirection.Output,size:1000);
答案 1 :(得分:0)
我认为问题源于使用固定长度字符串Char 在PL-SQL代码中的某处,您尝试将长度为N的Char或varchar2字符串放入长度为M的字符中,其中M> 1。 Ñ