Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11625747
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-04-21 17:07:15

对于 HR 架构的默认安装,控制台输出显示了员工 101 的两个记录中每个记录的字段(用分号分隔):

  101;9/21/1989 12:00:00 AM;10/27/1993 12:00:00 AM;AC_ACCOUNT;110;

  101;10/28/1993 12:00:00 AM;3/15/1997 12:00:00 AM;AC_MGR;110;

 

  上述代码显示,包中的过程是使用包名称 (ELECT_JOB_HISTORY) 和过程的名称(在此情况下为 GetJobHistoryByEmployeeId)指定的,二者之间用句点分隔。

  代码还说明了如何定义结果集的 REF CURSOR 参数。请注意,数据类型为 OracleType.Cursor,方向为 ParameterDirection.Output。

  还请注意,在访问 REF CURSOR 中的结果集的整个过程中,连接都保持打开状态。

  如果包返回多个游标,则 DataReader 会按照您向参数集合中添加它们的顺序来访问这些游标,而不是按照它们在过程中出现的顺序来访问。可使用 DataReader 的 NextResult() 方法前进到下一个游标。

  返回单个值的存储过程

  OracleCommand 类的 ExecuteOracleScalar() 方法用于执行将单个值作为 OracleType 数据类型返回的 SQL 语句或存储过程。如果命令返回一个结果集,则该方法会返回第一行第一列的值。如果返回了 REF CURSOR,而不是返回了 REF CURSOR 所指向的第一行第一列的值,则该方法会返回一个空引用。OracleCommand 类的 ExecuteScalar() 方法类似于 ExecuteOracleScalar() 方法,只不过它将值作为 框架数据类型返回。

  尽管如此,在使用 时,这两个方法都没有用。Oracle 存储过程不能将值作为 RETURN 语句的一部分返回,而只能将其作为 OUT 参数返回。有关信息,请参阅不返回数据的存储过程一节。同时,除了通过 REF CURSOR 输出参数以外,您不能返回结果集。下一节将对此进行讨论。

  您只能使用 RETURN 参数检索 的返回值(如上一节所述),而不能使用 ExecuteScalar 方法之一进行检索。

 

  Oracle 使用序列 来生成唯一编号,而不是使用 所用的数据类型 uniqueidentifier。无论是哪种情况,主要用途都是为主键列生成一系列唯一编号。与 uniqueidentifier 数据类型不同,序列是与将其用于主键值的一个或多个表无关的对象。

  Oracle 序列是原子对象,并且是一致的。也就是说,一旦您访问一个序列号,Oracle 将在处理下一个请求之前自动递增下一个编号,从而确保不会出现重复值。

阅读(2016) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~