You must specify the output paramaters direction.

解决方案 »

  1.   

    as ParameterDirection.Output.
      

  2.   

    Dim SqlCm As New System.Data.SqlClient.SqlCommand
            
            SqlCn.Open()
            SqlCm.CommandText = "Select_Manager"
            SqlCm.Connection = SqlCn
            SqlCm.CommandType = CommandType.StoredProcedure
            SqlCm.Parameters.Add("@Manager_id", Trim(username.Text))
            Dim M_psw As SqlParameter= New Sqlparameter("@Manager_password",Sqldbtype.char, 20)
            M_psw.Direction=ParameterDirection.Output
           SqlCm.Parameters.Add(M_psw)        
            Dim M_name As SqlParameter= New Sqlparameter("@Manager_name",Sqldbtype.char, 20)
            M_name.Direction=ParameterDirection.Output
            SqlCm.Parameters.Add(M_name)
            SqlCm.ExecuteNonQuery()
            SqlCn.Close()
      

  3.   

    mp = sqlcom.Parameters.Add"@xxx",SqlDbType.Char,10)
    mp.Direction as ParameterDirection.Output
      

  4.   

    ExecuteNonQuery获取的是SQL语句中inert、delete和update语句影响的行数,你的SQL语句只是用select选取记录,没有任何行受影响,当然不会返回什么值。
      

  5.   

    补充,
    假设调用的函数为showmanager,提供参数(Byval managerid as string)

    SqlCm.Parameters.Add("@Manager_id", Trim(username.Text))
    这一句改成
    dim parameterid as sqlparameter= new sqlparameter("@Manager_id",sqldbtype.char,20)
    parameterid.value= cstr(trim(username.text))
    SqlCm.Parameters.Add(parameterid)
    还有不知道你output出来的name和password要放到哪里显示