使用ADO.NET访问Oracle 9i存储过程(上)

http://tech.ddvip.com   2007年05月13日    社区交流

本文详细介绍使用ADO.NET访问Oracle 9i存储过程(上)

  9.

  处理结果。在我们的示例中,可在显示到控制台的输出参数中得到记录数:

  Console.WriteLine(cmd.Parameters["reccount"].Value);

  下面是在本示例中开发的用于执行存储过程和检索结果的代码:

OracleConnection conn = new OracleConnection("Data Source=oracledb;
   User Id=UserID;Password=Password;");
  OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "COUNT_JOB_HISTORY";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("reccount", OracleType.Number).Direction =
   ParameterDirection.Output;
  conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
  Console.WriteLine(cmd.Parameters["reccount"].Value);

  不返回数据的存储过程

  OracleCommand 类的 ExecuteOracleNonQuery() 方法用于执行不返回任何行的 SQL 语句或存储过程。该方法返回一个 int 值,表示受 UPDATE、INSERT 和 DELETE 命令影响的行数;如果没有任何行受到影响,则返回 -1。如果您所执行的 INSERT、DELETE 或 UPDATE 语句恰好影响一行,则该方法具有单个参数 OracleString out rowid,该参数唯一标识 Oracle 数据库中受影响的行。可以使用该值来优化后续相关查询。

  还可以使用 OracleCommand 类的 ExecuteNonQuery() 方法来执行不返回数据的存储过程,但您将无法获得上面介绍的唯一行标识符。

  尽管上述命令都不会返回任何数据,但映射到参数的输出参数和返回值仍然使用数据进行填充。这使您可以使用上述任一命令从存储过程返回一个或多个标量值。

责编:豆豆技术应用

正在加载评论...