当前位置:Gxlcms > PHP教程 > php调用Oracle的存储过程详解

php调用Oracle的存储过程详解

时间:2021-07-01 10:21:17 帮助过:6人阅读

php程序访问数据库,完全可以使用存储过程,有人认为使用存储过程便于维护。不过仁者见仁,智者见智,在这个问题上,偶认为使用存储过程意味着必须要dba和开发人员更紧密配合,如果其中一方更变,则显然难以维护。

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

  1. //建立一个TEST表
  2. CREATE TABLE TEST (
  3. ID NUMBER(16) NOT NULL,
  4. NAME VARCHAR2(30) NOT NULL,
  5. PRIMARY KEY (ID)
  6. );
  7. //插入一条数据
  8. INSERT INTO TEST VALUES (5, 'PHP_BOOK');
  9. //建立一个存储过程
  10. CREATE OR REPLACE PROCEDURE PROC_TEST (
  11. p_id IN OUT NUMBER,
  12. p_name OUT VARCHAR2
  13. ) AS
  14. BEGIN
  15. SELECT NAME INTO p_name
  16. FROM TEST
  17. WHERE ID = 5;
  18. END PROC_TEST;
  19. /

PHP代码:

  1. <?php
  2. //建立数据库连接
  3. $user = "scott"; //数据库用户名
  4. $password = "tiger"; //密码
  5. $conn_str = "tnsname"; //连接串(cstr : Connection_STRing)
  6. $remote = true //是否远程连接
  7. if ($remote) {
  8. $conn = OCILogon($user, $password, $conn_str);
  9. }
  10. else {
  11. $conn = OCILogon($user, $password);
  12. }
  13. //设定绑定
  14. $id = 5; //准备用以绑定的php变量 id
  15. $name = ""; //准备用以绑定的php变量 name
  16. /** 调用存储过程的sql语句(sql_sp : SQL_StoreProcedure)
  17. * 语法:
  18. * BEGIN 存储过程名([[:]参数]); END;
  19. * 加上冒号表示该参数是一个位置
  20. **/
  21. $sql_sp = "BEGIN PROC_TEST(:id, :name); END;";
  22. //Parse
  23. $stmt = OCIParse($conn, $sql_sp);
  24. //执行绑定
  25. OCIBindByName($stmt, ":id", $id, 16); //参数说明:绑定php变量$id到位置:id,并设定绑定长度16位
  26. OCIBindByName($stmt, ":name", $name, 30);
  27. //Execute
  28. OCIExecute($stmt);
  29. //结果
  30. echo "name is : $name<br>";
  31. ?>

以上就是php 调用Oracle的存储过程详解的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行