title: Execute a pl/sql function with OracleCommand
body: <p>i have this pl/sql function, the only thing it does is validate that the user exist in the database, if the user exists this returns "Y" but if the user dont exist this return "N", what I want is get the value that I return in pl/sql in c #.</p>
  
  <p>I am using oracle 10g</p>
  
  <pre><code>            CREATE OR REPLACE FUNCTION KRIST.f_Login (userName IN VARCHAR2,
                                                          password IN VARCHAR2)
              RETURN VARCHAR2 
              IS
                  CURSOR USERFINDER IS
                      SELECT IdEmpleado
                      FROM EMPLEADO
                      WHERE Usuario=userName
                      AND Clave=password;
                  id number;
                  returnVal VARCHAR2(1);
              BEGIN
                  OPEN USERFINDER;
                  FETCH USERFINDER INTO id; 
                  IF(id IS NULL) THEN
                      returnVal:='Y';
                      RETURN returnVal;
                  END IF;
                  returnVal:='N';
                  RETURN returnVal;
                  CLOSE USERFINDER;
              END;
              /
  </code></pre>
  
  <p>how I can perform this function and get the result in a variable... i have thos code but dont works</p>
  
  <pre><code>                OracleCommand cmd = new OracleCommand("krist.p_login",conn);
                  cmd.CommandType = CommandType.StoredProcedure;  // use StoredProcedure with Functions as well
                  OracleParameter returnVal = new OracleParameter("returnVal",null);
                  OracleParameter p_one = new OracleParameter("userName","kristian");
                  OracleParameter p_two = new OracleParameter("password", "kristian");
                  returnVal.OracleType = OracleType.VarChar;
                  returnVal.Size = 1;
                  p_one.OracleType = OracleType.VarChar;
                  p_two.OracleType = OracleType.VarChar;
                  p_one.DbType = DbType.String;
                  p_two.DbType = DbType.String;
                  returnVal.DbType = DbType.String;
                  returnVal.Direction = ParameterDirection.ReturnValue;
                  p_one.Direction = ParameterDirection.Input;
                  p_two.Direction = ParameterDirection.Input;
                  cmd.Parameters.Add(p_one);
                  cmd.Parameters.Add(p_two);
                  cmd.Parameters.Add(returnVal);
                  cmd.ExecuteNonQuery();
                  String bval = Convert.ToString(returnVal.Value);
                  return bval;
  </code></pre>