con questa SP...
codice:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[SP_LOGIN_ID]
(
 @USERID Varchar(20),
 @PASSWORD Varchar(6), 
 @id INT OUTPUT
)
AS

SELECT @id = id 
FROM TBLOCALI 
WHERE userid = @USERID 
AND pwd = @PASSWORD

IF @id IS NULL SET @id = -1
...e con questo codice (VB)
codice:
        Dim conn As New SqlConnection(stringaconnessione)
        Dim cmdLogin As SqlCommand

        ' Preparo il command con la Stored Procedure
        cmdLogin = New SqlCommand("SP_LOGIN_ID", conn)
        cmdLogin.CommandType = CommandType.StoredProcedure

        ' Definisco il valore di ritorno
        cmdLogin.Parameters.Add("id", SqlDbType.Int)
        cmdLogin.Parameters("id").Direction = ParameterDirection.Output

        ' Aggiungo i parametri di input
        cmdLogin.Parameters.Add("@USERID", SqlDbType.VarChar).Value = Nomeutente
        cmdLogin.Parameters.Add("@PASSWORD", SqlDbType.VarChar).Value = Password

        ' Eseguo
        Try
            conn.Open()
            cmdLogin.ExecuteNonQuery()

            If cmdLogin.Parameters("id").Value <> -1 Then
                Return True
            Else
                Throw New System.Data.DataException("Errore ADO.Net")
                Return False
            End If

        Catch ex As System.Data.DataException
            HttpContext.Current.Response.Write("<font color=red>WARNING:</font>" & ex.Message)
            Return False
        Catch ex As Exception
            HttpContext.Current.Response.Write("<font color=red>WARNING:</font>" & ex.StackTrace)
            Return False
        Finally
            conn.Close()
            cmdLogin.Dispose()
        End Try

...mi da errore sulla .ExecuteNonQuery

il campo ID nella tabella è di tipo Int ed è PK