Выполнение хранимой процедуры без возврата данных
Вместо вызова SqlCommand.ExecuteReader()
, вызовите SqlCommand.ExecuteNonQuery()
.
Согласно этой ссылке MSDN :
ExecuteReader
Выполняет команды, возвращающие строки.Для повышения производительности ExecuteReader вызывает команды, используя системную хранимую процедуру Transact-SQL sp_executesql.Следовательно, ExecuteReader может не дать желаемого эффекта, если он используется для выполнения команд, таких как инструкции Transact-SQL SET.
ExecuteNonQuery
Выполняет такие команды, как операторы Transact-SQL INSERT, DELETE, UPDATE и SET.
EDIT :
Выполнить хранимую процедуру для извлечения данных
Или, если вы пытаетесь вернуть скалярное значение, вы можете использовать SqlCommand.ExecuteScalar()
.Но если вы хотите получить данные, вам нужно использовать объект SqlDataReader
, например:
Dim queryString As String = "usp_getdata"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
command.CommandType = CommandType.StoredProcedure
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
' Call Read before accessing data.
While reader.Read()
Console.WriteLine(String.Format("{0}, {1}", _
reader(0), reader(1)))
End While
' Call Close when done reading.
reader.Close()
End Using
SqlDataReader Reference Class