Heim  >  Artikel  >  Backend-Entwicklung  >  用PHP调用Oracle存储过程的方法_PHP教程

用PHP调用Oracle存储过程的方法_PHP教程

PHP中文网
PHP中文网Original
2016-07-21 15:50:29857Durchsuche

但是使用存储过程至少有两个最明显的优点:速度和效率。使用存储过程的速度显然更快。在效率上,如果应用一次需要做一系列sql操作,则需要往返于php与oracle,不如把该应用直接放到数据库方以减少往返次数,增加效率。但是在internet应用上,速度是极度重要的,所以很有必要使用存储过程。偶也是使用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代码  

代码如下:

<?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
"; 
  ?>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn