PHP调用Oracle的存储过程实现方法

2017-03-15 1061 8 编辑:深圳网站建设 来源:互联网

存储过程很高端、大气、上档次,对于存储过程我一向的观点是支持使用,必竟我们追求数据存储的“速度和效率”,Oracle作为超专业级的数据库服务引擎,在效率上,如果一次需要做一系列SQL操作,则需要往返于PHP与ORACLE之间,不如把操作直接放到数据库,这样有效减少往返次数,增加效率。为了能让想了解存储过程的朋友便于理解,写了下面这个例子,先来看如何建立数据表和存储过程:

//在Oracle中建立一个供测试的数据表

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 = "test"; //数据库用户名

$password = "test"; //密码

$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变量名

/* 调用存储过程的sql语句(sql_sp : SQL_StoreProcedure)

 *  语法:

 *  BEGIN 存储过程名([[:]参数]); END;

 *  加上冒号表示该参数是一个位置

*/

$sql_sp = "BEGIN PROC_TEST(:id, :name); END;";

$stmt = OCIParse($conn, $sql_sp);

//执行绑定

OCIBindByName($stmt, ":id", $id, 16);//参数说明:绑定php变量$id到位置:id,并设定绑定长度16位

OCIBindByName($stmt, ":name", $name, 30);

OCIExecute($stmt);

//结果

echo "name is : $name<br>";

?>

PHP调用Oracle的存储过程.jpg

专业的网站建设公司,深正互联,如您有网站营销需求,请您关注我们,或者致电13828884598

本站文章均为深正网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,但谢绝直接搬砖和抄袭!感谢...
关注深正互联