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
( 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
因为 into 给 那几个输出参数赋值了。。 所以不能单独执行
select "uId","uName","uPwd" into uId,uname, upwd from DB_USER
因为 into 给 那几个输出参数赋值了。。 所以不能单独执行
select "uId","uName","uPwd" into uId,uname, upwd from DB_USER
into 是这个意思啊???
第一次听说,假如你查询出多条数据怎么办,那你一个参数 要放一个数组》?????
如果没猜错,语法是
update 表名 set (字段1=值1,字段2=值2,) where 字段1=值1 and 字段2=值2。。
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);
你瞧瞧,参数实例化时,格式都一样了吗?