2016-08-04 4 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

Извините, я забыл включить его в свой вопрос, но он есть. VALUES (getdate(), @posted_xml_body) – mike

+0

Здесь я использую .ExecuteScalar для получения возвращаемого значения .... Я не вижу никакой другой проблемы в вашей процедуре. –

ответ

0

Вы вставили неправильно или не хватает ")" здесь

VALUES  
(getdate(), @posted_xml_body) 
0

Есть пара вещей, которые я хотел бы предложить.

изменить тип столбца на nvarchar (макс.), Выбрать идентификатор области, просто убедитесь, что ваша таблица является первичным ключом, потому что ваш код 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 
Смежные вопросы