Я пытаюсь вернуть varchar из хранимой процедуры с помощью следующего кода:
Dim uname As SqlCommand = New SqlCommand("userName", uconnect)
uname.CommandType = CommandType.StoredProcedure
Dim outVal As SqlParameter = uname.Parameters.Add("userName", SqlDbType.VarChar)
uname.Parameters.AddWithValue("userID", userLog)
uname.Parameters.AddWithValue("@userName", " ")
outVal.Direction = ParameterDirection.Output
uname.ExecuteReader() 'This line trows exception saying:
' "String[1]: the Size property has an invalid size of 0."
uconnect.Close()
Dim name As String = outVal.Value
Вот код SP:
ALTER PROCEDURE [dbo].[userName]
-- Add the parameters for the stored procedure here
@userID int,
@userName varchar(30) OUTPUT
AS
SELECT @userName = owner FROM users WHERE user_id = @userID
Я также попытался установить размер возвращаемого параметра varchar следующим образом:
uname.Parameters.Add ("userName", SqlDbType.VarChar, 30 )
но если я добавлю параметр размера в строку выше, когда я запускаю программу, она выдает новое исключение, говорящее: «Хранимая процедура UserName имеет слишком много заданных аргументов».