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 //建立数据库连接 $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!