PHPでOracle格納プロセスを呼び出す方法

1912 ワード

しかし、記憶プロセスを使用すると、少なくとも2つの最も明白な利点がある:速度と効率.保存プロセスを使用する速度は明らかに速い.効率的に、一連のsql操作を一回適用するなら、phpとoracleを往復する必要があります.むしろ、このアプリケーションを直接データベースの方に置いて往復回数を減らすほうが効率的です.しかし、インターネットの応用においては、速度が極めて重要なので、記憶過程を使う必要があります.私もphpを使ってメモリプロセスを呼び出して間もないです.次の列を作りました.
コード
 
  
  // test
  create table test (
  id number(16) not null,
  name varchar2(30) not null,
  primary key (id)
  );
  //
  insert into test values (5, 'php_book');
  //
  create or replace procedure proc_test (
  p_id in out number,
  p_name out varchar2
  ) as
  begin
  select name into p_name
  from test
  where id = 5;
  end proc_test;
phpコード
 
  
  //
  $user = "scott"; //
  $password = "tiger"; //
  $conn_str = "tnsname"; // (cstr : connection_string)
  $remote = true //
  if ($remote) {
  $conn = ocilogon($user, $password, $conn_str);
  }
  else {
  $conn = ocilogon($user, $password);
  }
  //
  $id = 5; // php id
  $name = ""; // php name
  /** sql (sql_sp : sql_storeprocedure)
  * :
  * begin ([[:] ]); end;
  *
  **/
  $sql_sp = "begin proc_test(:id, :name); end;";
  //parse
  $stmt = ociparse($conn, $sql_sp);
  //
  ocibindbyname($stmt, ":id", $id, 16); // : php $id :id, 16
  ocibindbyname($stmt, ":name", $name, 30);
  //execute
  ociexecute($stmt);
  //
  echo "name is : $name
";
  ?>