I notice you aren't setting the parameters to a value inside the procedure - that's why they are returning as null. You would need to do something like (may be a much better way to this though)
CREATE procedure dbo.Appt_Login_NET
(
@LoginName nvarchar(15),
@Password NvarChar(15),
@UserName nvarchar(15)Output,
@UserPassword nvarchar(15)Output,
@UserClinic nvarchar(3)Output,
@UserTester bit Output
)
as
select
UserName,
UserPassword,
UserClinic,
UserTester
from
Clinic_users
where
UserName = @LoginName
and
UserPassword = @Password
set @UserName = (Select USerName from clinic_users where UserName = @LoginName
and
UserPassword = @Password
set @UserName = (Select UserPAssword from clinic_users where UserName = @LoginName
and
UserPassword = @Password
but that is pretty inefficient - is there a reason you are using output parameters in this way? Couldn't you just check the values in the results the stored proc returns? Or even check the rowcount to see if any rows where returned? Possibly use a datareader.
i.e. modify the end of your code to look like
con.Open()
dim dr as SQlDataReader
dr = cmd.ExecuteReader()
if dr.read
Label1.Text = dr(0)
Else
Label1.Text = "No Results Found"
End If
con.Close()