分类: Oracle
2008-05-22 17:37:28
来源: | ||||||
| ||||||
Ruby 提供了一些对于编写和维护脚本非常有用的全局常数。图 3 显示了其中某些正在运行的预定义全局常数。这三个全局常数指明了这个特定 Ruby 解释器的底层平台、版本和发布日期。此处并未显示,但您还可以利用另一个预定义的全局常数 ENV 查看操作系统中设置的环境变量。在本文后面,您还将了解如何使用散列版本的 ENV。
图 4 显示了交互式 Ruby 的另一个非常有用的特性。您在该图中看不到单击 TAB 键的操作,因此只能相信我的话:在 IRB 提示符处输入 0,后面跟一个句点,然后单击 TAB 键两次。然后,系统会显示针对 0 或其他数值的方法。可将这看作与 Java 集成开发环境 (IDE)(如 JDeveloper)中的方法名称完成类似。您会看到针对数字的 ceiling (ceil)、floor 以及 round 方法以及转换方法,如 to_s(转换成字符串)和 to_a(转换成数组)。
Ruby 与 Oracle 数据库交互 为了使 Ruby 能够与我们的 Oracle 数据库通信,需要使用 Ruby/OCI8。可从 获得。尽管我们可以用交互式 IRB 编写自己的 Ruby 代码来访问数据库,但这种方法比较费事。较好的方法是:将我们的数据库访问代码编写成一个 Ruby 脚本文件,然后用 ruby 解释器命令运行该 Ruby 脚本文件。 Ruby 与 Oracle DDL SQL。 我们首先创建一个用于创建新表的 Ruby 脚本文件。我们需要声明与 Ruby/DBI 结合使用的是一个 require 语句,然后使用 Ruby/DBI API。清单 1 显示以上内容和 CREATE 语句。 清单1:createStatesTable.rb
清单 1 中的大多数代码都是您在 SQL*Plus 或 SQL Developer 中用于创建一个新数据库表的 SQL 代码。数据库连接字符串包括 DBI:OCI8:ORCL 字符串以及用户名和口令(本示例中为 hr/hr)。DBI 部分是标准内容,OCI8 部分指的是 Ruby/OCI8 驱动程序,ORCL 部分指的是数据库服务。可以使用简单的 createStatesTable.rb 命令在命令行执行这个 createStatesTable.rb 文件。如果一切顺利,则不会提供任何反馈,但该表将处于 HR 模式中。 继续介绍 Ruby 的其他数据库操作之前,需要指出 ruby 解释器命令允许您检查脚本的语法而无需实际运行它。例如,如果要测试 createStatesTable.rb 脚本中的语法而不实际创建该表,我可以使用 -c 选项,如下: ruby -c createStatesTable.rb. 清单 1 中与 Ruby 有关的另一件有趣的事情是未定义变量 dbh 的数据类型。与其他动态脚本编写语言一样,Ruby 不需要声明变量的数据类型,而是根据变量的上下文来假定所需的数据类型。在其余的 Ruby 代码清单中,我们将看到更多这样的“动态类型 (duck typing)”— 如果它走起来像鸭子,叫起来像鸭子,那么它就是鸭子。 Ruby 与 Oracle DML SQL。 创建了一个 STATES 表之后,我们来填充它。我们将向该表中插入几个代表性的州名,如清单 2 所示。 清单2:populateStatesTable.rb
清单 2 中有一些需要了解的 Ruby/DBI 新特性。首先,注意问号在 INSERT 语句中用作占位符。这很有用,因为它允许创建该语句一次,然后针对插入到表中的每个代表性州名进行填充。由于 INSERT 语句是一个 DML 语句(与清单 1 中的 DDL CREATE 语句不同),因此在该清单中还需要一个 COMMIT 调用。 |