2011-09-07 47 views
0

這是我的調用程序代碼:dotConnect和調用過程與參數問題

cmd.CommandText = "x.PROCEDURENAME"; 

cmd.Parameters["V_IID_DOKUMENT_PO"].Value = "1"; 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = Convert.ToInt32(x.Text); 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = x.Text; 
cmd.Parameters["x"].Value = "1"; 
cmd.ExecuteNonQuery(); 

,但我得到

名爲「V_IID_DOKUMENT_PO」的參數不受此 參數集合包含。

如果我檢查DB

PROCEDURE PROCEDURENAME 
(V_IID_DOKUMENT_PO IN NUMBER 
    ... 

什麼,我做錯了什麼?

如果我使用:

cmd.Parameters.Add("V_IID_DOKUMENT_PO", OracleDbType.Number, 1); 

我得到無效的SQL語句

+0

你只有錯誤的參數或其他以及? –

回答

1

使用,

cmd.CommandType = System.Data.CommandType.StoredProcedure; 
cmd.Parameters.Add("V_IID_DOKUMENT_PO", OracleDbType.Number).Value=1; 
+0

現在我再次得到無效的SQL語句 – senzacionale

+1

我會反對使用這個 - 會發生什麼是ADO.NET現在必須**猜測**該參數是什麼類型。大多數情況下,這種猜測是相當不錯的 - 但它仍然是一種猜測,它可能會出錯(尤其是如果您將'DbNull.Value'作爲值傳遞.... ADO.NET應該如何知道**實際是什麼**鍵入這個參數將會是???)。我會**總是**使用'Parameters.Add(,DbType.XXXXX)'清楚地**定義您的參數類型是 –

+1

@marc_s 100%同意!我編輯了我的帖子。 – adatapost

2

你指定這是你調用存儲過程?

例如你是否有這條線somewehre(您的示例代碼發佈似乎不完整):

cmd.CommandType = CommandType.StoredProcedure; 
+0

不,我沒有這個。我無法在dotConnect C#示例中找到它。謝謝 – senzacionale