当我们使用Drupal构建一个大型项目的时候,我们常常会和各种业务系统打交道,而有的业务系统数据库用的是oracle,我们需要建立与oracle的连接,从里面查询我们需要的数据。
我们假定你已经配置好了,oracle的相关库。
windows下面参考:
Drupal 与Oracle集成时,oracle相关配置文档, http://www.thinkindrupal.com/node/6009
linux下面也需要安装oracle的客户端,然后安装PHP的oracle扩展,这个过程有点费事,网上有很多教程。
我们假定你已经完成了这些配置。我们封装的连接oracle的函数我们封装的连接oracle的函数,
/**
* 从 Oracle 获取数据.
*
* @param string $sql
* SQL 链接字符串.
* @param array $column_names
* 返回的数据列名. 依据列名返回数据.
* @return array
* 数据.
*/
function myoracle_retrieve_data($sql, array $column_names = array()) {
$data = array();
$conn = oci_connect('username', 'password', 'dbname');
if (!$conn) {
$e = oci_error();
\Drupal::logger('myoracle')->error("数据库连接时出错: " .var_export($e,true));
return $data;
}
\Drupal::logger('myoracle')->notice("查询SQL: " .var_export($sql,true));
// 编译sql语句.
$ora = oci_parse($conn, $sql);
oci_execute($ora, OCI_DEFAULT);
while ($row = oci_fetch_array($ora)) {
$tmp = array();
foreach ($column_names as $name) {
$tmp[$name] = $row[$name];
}
$data[] = $tmp;
}
return $data;
}在这个函数里面,设置用oracle的用户名,密码,数据库名,就可以连接oracle,给出一个oracle的sql语句,就能够查找到一个结果数组,剩下的就交给你自己处理了。
我们是直接连的,Drupal官方有oracle的数据库驱动,https://www.drupal.org/project/oracle ,它允许你将整个Drupal跑在oracle上,这个用的人很少,至少理论上是可行的。

