Процедура SQL Server, возвращающая -1 - PullRequest
1 голос
/ 26 июня 2019

Выполнение хранимой процедуры SQL Server через VB.Net Хранимая процедура выполняется правильно и возвращает значение. Однако, когда он выполняется через VB.Net, он возвращает значение -1. ​​

Исходный код из VB.NET

Dim cmdSPStagingToPROD As New SqlCommand
Dim cnStagingToPROD As SqlConnection
Dim SPResponse As String

cmdSPStagingToPROD.CommandType = CommandType.StoredProcedure

cmdSPStagingToPROD.Parameters.Add("@responseMessage", SqlDbType.NVarChar, 250)
cmdSPStagingToPROD.Parameters("@responseMessage").Direction = ParameterDirection.Output

cnStagingToPROD = New SqlConnection(ConnectionString)
cnStagingToPROD.Open()

cmdSPStagingToPROD.Connection = cnStagingToPROD

SPResponse = cmdSPStagingToPROD.ExecuteNonQuery()

If SPResponse = "Success" Then
    StagingToPROD = "Success"
Else
    StagingToPROD = "Error"
    ErrorText = "Staging to PROD error " & SPResponse
End If

Ожидается, что SET @responseMessage = 'Success' вернет 'Success' или 'Error'

Ответы [ 2 ]

3 голосов
/ 26 июня 2019

Вы присваиваете значение выходному параметру, чтобы получить это значение после выполнения, вам нужно прочитать:

cmdSPStagingToPROD.Parameters("@responseMessage").Value.ToString()

В настоящее время вы получаете - 1, поскольку ExecuteNonQuery() возвращает количество затронутых строк -но, поскольку вы SET NOCOUNT ON не будете заселены.

0 голосов
/ 08 июля 2019

Вам необходимо прочитать выходной параметр @responseMessage после выполнения команды.
Таким образом:

cmdSPStagingToPROD.Execute()
SPResponse = cmdSPStagingToPROD.Parameters("@responseMessage").Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...