Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erklärung des PHP-Aufrufs der gespeicherten Prozedur von Oracle

Detaillierte Erklärung des PHP-Aufrufs der gespeicherten Prozedur von Oracle

怪我咯
怪我咯Original
2017-07-10 11:59:541847Durchsuche

PHP-Programme können auf die Datenbank zugreifen, indem sie gespeicherte Prozeduren verwenden. Einige Leute denken, dass die Verwendung gespeicherter Prozeduren einfacher zu warten ist. Wohlwollende Menschen haben jedoch unterschiedliche Meinungen zu diesem Thema. Ich denke, dass die Verwendung gespeicherter Prozeduren eine engere Zusammenarbeit zwischen DBA und Entwicklern erfordert.

Aber die Verwendung gespeicherter Prozeduren hat mindestens zwei der offensichtlichsten Vorteile: Geschwindigkeit und Effizienz. Die Verwendung gespeicherter Prozeduren ist offensichtlich schneller. Aus Effizienzgründen muss eine Anwendung, wenn sie eine Reihe von SQL-Vorgängen gleichzeitig ausführen muss, zwischen PHP und Oracle hin- und herwechseln. Um die Anzahl der Roundtrips zu reduzieren, ist es besser, die Anwendung direkt in die Datenbank zu stellen und die Effizienz steigern. Bei Internetanwendungen ist die Geschwindigkeit jedoch äußerst wichtig, daher ist die Verwendung gespeicherter Prozeduren erforderlich. Ich habe vor Kurzem auch PHP verwendet, um gespeicherte Prozeduren aufzurufen, und habe das folgende Beispiel gemacht.

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

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

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des PHP-Aufrufs der gespeicherten Prozedur von Oracle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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