<?php
print "<HTML><PRE>";
$db = "";$c1 = ocilogon("scott","tiger",$db);
$c2 = ocilogon("scott","tiger",$db);function create_table($conn)
{ $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))");
  ociexecute($stmt);
  echo $conn." created table\n\n";
}function drop_table($conn)
{ $stmt = ociparse($conn,"drop table scott.hallo");
  ociexecute($stmt);
  echo $conn." dropped table\n\n";
}function insert_data($conn)
{ $stmt = ociparse($conn,"insert into scott.hallo 
            values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." inserted hallo\n\n";
}function delete_data($conn)
{ $stmt = ociparse($conn,"delete from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn." deleted hallo\n\n";
}function commit($conn)
{ ocicommit($conn);
  echo $conn." committed\n\n";
}function rollback($conn)
{ ocirollback($conn);
  echo $conn." rollback\n\n";
}function select_data($conn)
{ $stmt = ociparse($conn,"select * from scott.hallo");
  ociexecute($stmt,OCI_DEFAULT);
  echo $conn."----selecting\n\n";
  while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">\n\n";
  echo $conn."----done\n\n";
}create_table($c1);
insert_data($c1);   // Insert a row using c1
insert_data($c2);   // Insert a row using c2select_data($c1);   // Results of both inserts are returned
select_data($c2);   rollback($c1);      // Rollback using c1select_data($c1);   // Both inserts have been rolled back
select_data($c2);   insert_data($c2);   // Insert a row using c2
commit($c2);        // commit using c2select_data($c1);   // result of c2 insert is returneddelete_data($c1);   // delete all rows in table using c1
select_data($c1);   // no rows returned
select_data($c2);   // no rows returned
commit($c1);        // commit using c1select_data($c1);   // no rows returned
select_data($c2);   // no rows returneddrop_table($c1);
print "</PRE></HTML>";
?>

解决方案 »

  1.   

    其实oracle的函数和别的也差不多,只不过它这里多了一个定义输出变量的过程, 
       而且最应该注意的就是,在定义的时候,字段名必须是大写的,因为oracle里不认小写 
      其它的就差不多了,赋值,显示,关闭游标 
      $conn = ocilogon("gcxx","gcxx","server1"); 
      $id = OCIParse($conn,"select rownum,gcdjbh,gcmc from zbgg"); 
      OCIDefineByName($id,"ROWNUM",&$rownum); 
      OCIDefineByName($id,"GCDJBH",&$gcdjbh); 
      OCIDefineByName($id,"GCMC",&$gcmc); 
       
      OCIExecute($id); 
      $i=0; 
      while (OCIFetch($id)) { 
       
      echo "序号:".$rownum." 
      "; 
      echo "工程登记编号:".$gcdjbh." 
      "; 
      echo "工程名称:".$gcmc." 
      "; 
      $i++; 
      if ($i>10) break; 
      } 
      OCIFreeStatement($id); 
      OCILogoff($conn); 
      ?> 
      

  2.   

    我的oci好像有点问题,是否可以将其用ora替代??
      

  3.   

    楼上的哥们,用不用什么putenv()之类的东东阿???
      

  4.   

    哈哈,好一个醉翁之意不在酒,在分,You will need the Oracle8 client libraries to use this extension. 
    你需要安装客户端的库
      

  5.   

    我都安装了Oracle8 Client,可是还是提示没有定义ocilogon,这是为什么呢??
      

  6.   

    一个很奇怪的问题,php_oracle.dll和php_oci8.dll在同一个目录下,可是每次却只提示找不到php_oci8.dll而能找到php_oracle.dll,这是为什么呢??