2016-08-04 73 views
0

我有以下存儲過程:VB.NET過程或函數的參數太多指定

CREATE PROCEDURE MyProc  
@posted_xml_body xml  
AS  
INSERT INTO MyTable  
(post_datetime, post_body)  
VALUES  
(getdate(), @posted_xml_body) 

而下面的VB代碼:

Using aConnection As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings(connectionString).ConnectionString) 
    aConnection.Open() 
    Dim aCommand As New Data.SqlClient.SqlCommand("MyProc", aConnection)  
    aCommand.CommandType = Data.CommandType.StoredProcedure 
    aCommand.Parameters.AddWithValue("@posted_xml_body", aXMLString) 

    Dim rows_affected As Integer = aCommand.ExecuteNonQuery() 

    aCommand.Dispose() 
    aConnection.Close() 

    Return rows_affected 

End Using 

不過,我不斷收到以下錯誤

「過程或函數指定的參數太多。」

感謝您的任何建議。

+0

哪裏是在存儲過程的最後括號(後GETDATE(),XML_Body)? –

+0

對不起,我忘了將它包含在我的問題中,但它在那裏。值 (getdate(),@posted_xml_body) – mike

+0

這裏我利用.ExecuteScalar獲得返回值....我看不到任何其他問題在你的程序。 –

回答

0

您粘貼錯誤或缺少 「)」 在這裏

VALUES  
(getdate(), @posted_xml_body) 
0

有幾件事情我會建議。

將列類型改爲nvarchar(max),選擇範圍標識,只需確保您的表爲主鍵,因爲您的VB代碼會給您一個嘗試將日期轉換爲整數的異常。

CREATE PROCEDURE MyProc  
@posted_xml_body as nvarchar(max)  
AS 
Begin 
INSERT INTO MyTable  
(post_datetime, post_body)  
VALUES  
(getdate(), @posted_xml_body);SELECT SCOPE_IDENTITY() 
END 

你VB代碼

Using aConnection As New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings(connectionString).ConnectionString) 

    Dim rows_affected As Integer = 0 

    Try 
     aConnection.Open() 

     Dim aCommand As New Data.SqlClient.SqlCommand("MyProc", aConnection) 

     aCommand.CommandType = Data.CommandType.StoredProcedure 
     aCommand.Parameters.AddWithValue("@posted_xml_body", aXMLString) 
     rows_affected = aCommand.ExecuteScalar() 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    Finally 
     If aConnection.State = ConnectionState.Open Then 
      aConnection.Close() 
     End If 
    End Try 

    Return rows_affected 

End Using 
相關問題