2015-09-09 83 views
0

我收到了返回的函數。Oracle動態參數錯誤

我正在使用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: error number or value :character string buffer too small

我試圖給一個大小爲返回值,但這並沒有工作,我也試圖弄清楚,但一切都沒有工作。

有人可以看看這個嗎?

+0

您是否嘗試了OracleDbType.Varchar2的值? – tdbeckett

+0

錯誤是否可以在過程調用本身?如果你直接從sqlplus調用該過程,它是否工作? – OldProgrammer

+0

看到我的回答:) –

回答

0

我想這個問題來自於使用Char是一個固定長度的字符串。
在您的PL-SQL代碼的某處,您嘗試將長度爲N的Char或varchar2字符串放入長度爲M的字符M中,其中M> N

2

您需要指定varchar2的最大大小。

實施例:

parameters.Add( 「P_OUTPUT」,DBTYPE:OracleDbType.Varchar2,方向:ParameterDirection.Output,大小:1000);