2016-10-25 43 views
0

當從C#執行一個oracle函數時,我們得到這個錯誤。 請幫忙解決。從c#調用oracle函數給出錯誤

ORA-06550:行1,列15:

PLS-00306:錯誤數量或類型的呼叫參數 'LIST_WITHOUT_DUBLICATES'

ORA-06550:第1行,第7列:

PL/SQL:語句被忽略

我的C#代碼

comm.Connection = conn; 
comm.CommandText = "LIVE.list_without_dublicates"; 
comm.CommandType = CommandType.StoredProcedure; 

comm.Parameters.Add("p_str", to_list); 
comm.Parameters.Add("p_sep", ","); 
comm.Parameters.Add("result", OracleDbType.Varchar2); 
comm.Parameters["result"].Direction = ParameterDirection.ReturnValue; 

comm.ExecuteNonQuery(); 

函數簽名

LIVE.list_without_dublicates(
p_str IN VARCHAR2, 
p_sep IN VARCHAR2 DEFAULT ',') 
RETURN VARCHAR2 
+1

是功能名字真的是'list_without_dublicates'而不是'list_without_duplicates'? –

+0

@GordonLinoff它的'list_without_dublicates'只有 – Sachu

+0

你可以發佈你的函數體嗎? – Rahul

回答

1

至於我記得你必須指定一個Varchar2的(最大)長度時,它的返回值。

試試這個:

comm.Parameters.Add("result", OracleDbType.Varchar2, 4000, null, ParameterDirection.ReturnValue); 

代替

comm.Parameters.Add("result", OracleDbType.Varchar2); 
comm.Parameters["result"].Direction = ParameterDirection.ReturnValue; 

也可以嘗試

comm.CommandText = "BEGIN :result := LIVE.list_without_dublicates(:p_str, :p_sep); END;"; 
comm.CommandType = CommandType.Text; 

,而不是

comm.CommandText = "LIVE.list_without_dublicates"; 
comm.CommandType = CommandType.StoredProcedure; 
+0

@Wernfriend謝謝你的答案..它也給了我同樣的錯誤..所以我稱之爲功能從雙選擇函數名,它工作..im upvoting你的答案 – Sachu