Executenonquery return value

Eu quero fazer uma pesquisa em uma tabela para ver se existe um registro. Não quero realizar inserção ou atualização depois. Eu já fiz isso, mas de alguma forma não consigo fazer isso funcionar. Na minha página asp.net, não consigo obter nenhum valor retornado. O erro é "a string de entrada não está no formato correto". Tenho certeza de que é óbvio, mas não consigo vê-lo agora!

aqui está o meu código:

Dim con As New SqlConnection("connstring")
Dim cmd As New SqlCommand("checkname", con)
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add(New SqlParameter("@d", SqlDbType.Int))
cmd.Parameters("@id").Value = TextBox1.Text

Dim para As New SqlParameter
para.Direction = ParameterDirection.ReturnValue
para.ParameterName = "returnvalue"
cmd.Parameters.Add(para)

con.Open()


cmd.ExecuteNonQuery()
Dim exists As Integer
exists = Convert.ToInt32(cmd.Parameters("returnvalue").Value)
If exists = 1 Then
    Label1.Text = "You......"
         ElseIf exists = 0 Then
    Label1.Text = "You....."

End If
con.Close()

procedimento armazenado

CREATE PROCEDURE checkname 
    -- Add the parameters for the stored procedure here
    @id int
AS
  --This means it exists, return it to ASP and tell us
 -- SELECT 'already exists'

IF EXISTS(SELECT * FROM attendees WHERE id = @id)
BEGIN
RETURN 1
END
ELSE
BEGIN
   RETURN 0
END

questionAnswers(4)

yourAnswerToTheQuestion