create or replace PROCEDURE SP_DB_USER_GETUSER
( uName IN out VARCHAR2
, uPwd IN out VARCHAR2
, uId out INTEGER
) AS
BEGIN
 select "uId","uName","uPwd" into uId,uname, upwd from DB_USER where "uName"=uName and "uPwd"=uPwd;
END SP_DB_USER_GETUSER;存储过程//调用代码
 public Db_User GetUser(string uName, string uPwd)
    {
        List<OracleParameter> paras = new List<OracleParameter>();        OracleParameter parName = new OracleParameter("uName", uName);
        parName.Direction = ParameterDirection.InputOutput;
        OracleParameter parPwd = new OracleParameter("uPwd", uPwd);
        parName.Direction = ParameterDirection.InputOutput;
        //OracleParameter parSid = new OracleParameter("bbb", OracleType.Int32);
        //parName.Direction = ParameterDirection.Output;
        OracleParameter parUid = new OracleParameter("uId", OracleType.Int32);
        parName.Direction = ParameterDirection.Output;        paras.Add(parName);
        paras.Add(parPwd);
        // paras.Add(parSid);
        paras.Add(parUid);
        try
        {
            OracleDataReader reader = OracleHelper.ExecuteReader(OracleHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, "SP_DB_USER_GETUSER", paras.ToArray());
            if (reader.Read())
            {
                Db_User user = new Db_User();
                user.uName = reader["uName"] != null ? reader["uName"].ToString() : ""; ;
                user.uPwd = reader["uPwd"] != null ? reader["uPwd"].ToString() : ""; ;
                user.uId = int.Parse(reader["uId"].ToString());
                // user.sId = int.Parse(reader["sId"].ToString());
                return user;
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        return null;
    }报错
ORA-06550: 第 1 行, 第 7 列: 
PLS-00306: 调用 'SP_DB_USER_GETUSER' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列: 
PL/SQL: Statement ignored

解决方案 »

  1.   

     select "uId","uName","uPwd" into uId,uname, upwd from DB_USER你这句 能执行吗???
      

  2.   

     select "uId","uName","uPwd"  from DB_USER这能执行 
    因为 into 给 那几个输出参数赋值了。。 所以不能单独执行
    select "uId","uName","uPwd" into uId,uname, upwd from DB_USER
      

  3.   

    Oracle 和Sql 语法稍微有差异,但是很多基本语法还是大致相同的
      

  4.   

    这能执行  
    因为 into 给 那几个输出参数赋值了。。 所以不能单独执行
    select "uId","uName","uPwd" into uId,uname, upwd from DB_USER
    into 是这个意思啊???
    第一次听说,假如你查询出多条数据怎么办,那你一个参数 要放一个数组》?????
      

  5.   

    into 只能 赋值一条并且不为空
      

  6.   

    。各种参数不对啊很简单一条select啊
      

  7.   

    。各种参数不对啊很简单一条select啊
      

  8.   

    大哥,你的存储过程大家看着都觉得不对你是想update set吧
    如果没猜错,语法是
    update 表名 set (字段1=值1,字段2=值2,) where 字段1=值1 and 字段2=值2。。 
      

  9.   

    OracleParameter parName = new OracleParameter("uName", uName);
            parName.Direction = ParameterDirection.InputOutput;
            OracleParameter parPwd = new OracleParameter("uPwd", uPwd);
            parName.Direction = ParameterDirection.InputOutput;
            //OracleParameter parSid = new OracleParameter("bbb", OracleType.Int32);
            //parName.Direction = ParameterDirection.Output;
            OracleParameter parUid = new OracleParameter("uId", OracleType.Int32);
    你瞧瞧,参数实例化时,格式都一样了吗?