Oracle动态参数错误

时间:2015-09-09 14:18:47

标签: c# dapper

我得到的函数返回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:错误号或值:字符串缓冲区太小

我试图给出一个返回值的大小,但这不起作用,我也试图弄明白,但一切都没有用。

有人可以看一下吗?

2 个答案:

答案 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。 Ñ