string userName = "";            using (OracleConnection oraConn = new OracleConnection(connString))
            {
                if (oraConn.State != ConnectionState.Open)
                {
                    oraConn.Open();
                }                OracleCommand oraCommand = new OracleCommand("GetUserInfo",oraConn);
                oraCommand.CommandType = CommandType.StoredProcedure;
                oraCommand.Parameters.Add("v_userid", OracleType.VarChar);
                oraCommand.Parameters["v_userid"].Value = userId;
                oraCommand.Parameters.Add("v_username", OracleType.VarChar);
                oraCommand.Parameters["v_username"].Value = ParameterDirection.Output;
                oraCommand.ExecuteNonQuery();
                userName = oraCommand.Parameters["v_username"].Value.ToString();                if (oraConn.State == ConnectionState.Open)
                {
                    oraConn.Close();
                }
            }            return userName;以上这段代码是我调用存储过程,根据userid查询username。但总是取不到返回值,大家帮忙看下什么原因。
存储过程:CREATE OR REPLACE PROCEDURE GetUserInfo
(
v_userId   in varchar,
v_userName out varchar
)
is
BEGIN
  SELECT u.username into v_userName FROM users u WHERE u.userid = v_userid;
END;

解决方案 »

  1.   

    会不会是没有查询到数据,或者有多条了,u.username into v_userName 这种方式必须保证只有一条数据的。
      

  2.   

    数据库中每个id只对应一个name的
      

  3.   

    oraCommand.Parameters["v_username"].Size = ...
    这个参数要设置大小
      

  4.   


    oraCommand.Parameters["v_username"].Value = ParameterDirection.Output;改成oraCommand.Parameters["v_username"].Direction= ParameterDirection.Output;