Maison  >  Article  >  développement back-end  >  Explication détaillée de PHP appelant la procédure stockée d'Oracle

Explication détaillée de PHP appelant la procédure stockée d'Oracle

怪我咯
怪我咯original
2017-07-10 11:59:541801parcourir

Le programme php peut accéder à la base de données en en utilisant des procédures stockées Certaines personnes pensent que l'utilisation de procédures stockées est plus facile à maintenir. Cependant, les gens bienveillants ont des avis différents. Sur cette question, je pense que l'utilisation de procédures stockées signifie que le DBA et les développeurs doivent coopérer plus étroitement. Si l'une d'entre elles change, elle sera évidemment difficile à maintenir.

Mais l'utilisation de procédures stockées présente au moins deux des avantages les plus évidents : la rapidité et l'efficacité. L'utilisation de procédures stockées est évidemment plus rapide. En termes d'efficacité, si une application doit effectuer une série d'opérations SQL en même temps, elle doit faire des allers-retours entre PHP et Oracle. Il est préférable de mettre l'application directement dans la base de données pour réduire le nombre d'allers-retours. et accroître l'efficacité. Mais dans les applications Internet, la vitesse est extrêmement importante, il est donc nécessaire d'utiliser des procédures stockées. J'ai également utilisé PHP pour appeler des procédures stockées il n'y a pas longtemps et j'ai réalisé l'exemple suivant.

//建立一个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;
/

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn